Вопрос по PHP: Как проверить живая ли URL?

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

сабж в общем-то...
Нодо проверять на php мертвые линки.
 
S

STYX

Код:
<?php
$file=file.html;
if (is_file($file)==false)
echo "ага";
else
echo "не ага";
?>
Есть еще функция is_link, вместо is_file.
 
S

Sir Alex

2 STYX
Господин STYX. Какое отношение иеет файл к URL? Функция is_file() проверяет наличие файла и то, что это собственно файл, а is_link() проверка на то, что это символическая ссылка (что тоже относится к файловой системе).

2 Guest
Есть несколько способов:
1. использовать функцию fopen(), если она сможет открыть URL, значит он жив. Побочные явления: fopen скачает все, что будет отчетом на этот URL, например HTTP страничка(разумеется без картинок) или картинка.
2. использовать "сокеты", тут придется покапаться в RFC стандарте HTTP протокола. Вот пример:
Код:
<?php
$fp = fsockopen ("www.php.net", 80, $errno, $errstr, 30);
if (!$fp) {
 echo "$errstr ($errno)<br>\n";
} else {
 fputs ($fp, "GET / HTTP/1.0\r\nHost: www.php.net\r\n\r\n");
 while (!feof($fp)) {
   echo fgets ($fp,128);
 }
 fclose ($fp);
}
?>
Это вобщемто аналог fopen. Вам надо считать из соеденения только заголовок ответа, а не весь пакет данных. В заголовке будет код ошибки, если 200, значит все ОК (правда не всегда, есть еще redirection...)
3. посмотреть системные функции CURL (в часности curl_init() )

Успехов!
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!