Автор Тема: Проверка URL\'а на доступность (на существование)  (Прочитано 2641 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Lexx

  • Гость
Скажите как проверить существует (доступен) ли URL (как это делается в некоторых каталогах)?

Нашел в одном скрипте такую функцию

function check_url($url)
{
  if (
eregi(\'^[url]http://[/url]\', $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 = \'DNS\';
    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 = false;
  return $res;
  return true;
}
$url_status = @check_url($url);
if (!$url_status) {$error .= "Неправильный или недоступный URL";}
else if ($url_status == "DNS") 
	
{$error .= "URL недоступен";
	
}

Но он со многими сайтами не работает. Кстати дома он работает замечательно (проверял локальные хосты).

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Потому что по большому счету не все висят на 80 порту.
Может проще проверять доступность при помощи fopen() ?
AS IS...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28