Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как проверить, существует ли сайт?


Автор: Frikazoid 2.10.2002, 01:37
Привет всем!
Как проверить, существует ли сайт и прочитать заглавную страницу?
Есессенно с помошью скрипта!
Спасибо!

Автор: Wowa 2.10.2002, 03:39
Один из вариантов:
     <?php      
     include('урл');
     ?>

Но не на всех хостингах может работать :)

Автор: Devorior 24.10.2002, 23:38
в качестве второго варианта:
посчитай длину урла, т.е. размер html-страницы..если -1, то не существует ;)

Автор: MuToGeN 25.10.2002, 06:07
fopen() и fread(), но тоже не везде работает

Автор: MuToGeN 25.10.2002, 06:10
Цитата(Devorior @ 24.10.2002, 16:38)
в качестве второго варианта:
посчитай длину урла, т.е. размер html-страницы..если -1, то не существует ;)

а, пардон, как связаны между собой длина урла и размер того что по этому урлу находится?

Автор: Pawel 25.10.2002, 06:17
fopen работает не всегда. Бывает, что сервер проверяет заголовки запроса. И если лезет не браузер, то ничего не дает. Тогда лучше использовать fsockopen().

Автор: MuToGeN 25.10.2002, 06:36
Цитата(Pawel @ 24.10.2002, 23:17)
fopen работает не всегда. Бывает, что сервер проверяет заголовки запроса. И если лезет не браузер, то ничего не дает. Тогда лучше использовать fsockopen().

1) покажи мне хостинг (хоть платный, но кроме тарифов по 50 уе/месяц), где можно юзать сокетные PHPшные ф-ии
2) любой нормальный сервер не будет проверять заголовки типа USER-AGENT т.к. тогда по сайту можно будет лазить только с браузера поддерживающего HTTP/1.1
3) уж если не пашет fopen(), file() и сокеты (которые любой нормальный админ хостинга отключит), то никак не сделаешь

Автор: Devorior 29.10.2002, 01:12
пардон..может криво написал...не длина урла, а длина того, что по нему находится  ;-)

Автор: Frikazoid 3.11.2002, 04:47
Прикиньте! Я не был в этой теме и не отвечал, только по тому, что мне не приходили уведомления по мылу. От других тем приходили, а от этой нет. Я думал, что не отвечают мне вообще.
А так я проверю, но думаю, что не получится. Я проверял работу у себя на локалхосте(таким способом) и не работало.

Автор: MuToGeN 3.11.2002, 13:12
Цитата
пардон..может криво написал...не длина урла, а длина того, что по нему находится  
а это мысль... если оно саму страницу не скачает, то возможно хоть заголовки типа CONTENT-LENGHT получит...
Цитата
Я проверял работу у себя на локалхосте(таким способом) и не работало.
тут важны настройки парсера. если на локалхосте что-то работает/не работает, то вполне возможно что на сервере оно будет не работать/работать. еще это зависит от того с какими модулями был скомпилен PHP

Автор: buddy 4.11.2002, 08:00
чуваки, а разве это через whois не делается? ;-)

Автор: MuToGeN 5.11.2002, 05:05
Цитата(buddy @ 04.11.2002, 00:00)
чуваки, а разве это через whois не делается? ;-)

кстати да... только надо еще глав. страницу получить

Автор: Devorior 10.11.2002, 18:18
вот какой вариант еще есть:

function check_url($url) {
if (eregi( '^http://', $url)) {
   $urlArray = parse_url($url);
      if (!$urlArray[port]) $urlArray[port] =  '80';
      if (!$urlArray[path]) $urlArray[path] =  '/';
      $sock = fsockopen($urlArray[host], $urlArray[port], &$errnum, &$errstr);
      if (!$sock) $res =  'not valid';
      else {
         $dump .=  "GET $urlArray[path] HTTP/1.1\r\n";
         $dump .=  "Host: $urlArray[host]\r\nConnection: close\r\n";
         $dump .=  "Connection: close\r\n\r\n";
         fputs($sock, $dump);
         while ($str = fgets($sock, 1024)) {
            if (eregi("^http/[0-9]+.[0-9]+ ([0-9]{3}) [a-z ]*", $str))
              $res[code] = trim(eregi_replace('^http/[0-9]+.[0-9]+([0-9]{3})[a-z ]*',  "\\1", $str));
            if (eregi("^Content-Type: ", $str))
              $res[contentType] = trim(eregi_replace("^Content-Type: ", "", $str));
         }
         fclose($sock);
         flush();
         return $res[code];
      }
} else $res = "N/A";
return $res;
}

print check_url("http://localhost/gbook/index.php");

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)