Как проверить, существует ли веб-страница. jQuery и / или PHP

Я хочу, чтобы иметь возможность проверить форму, чтобы проверить, существует ли веб-сайт / веб-страница. Если он возвращает ошибку 404, то это определенно не должно проверяться. Если есть перенаправление … Я открыт для предложений, иногда перенаправления переходят на страницу с ошибкой или на главную страницу, иногда они идут на страницу, которую вы искали, поэтому я не знаю. Возможно, для перенаправления может быть специальное уведомление, которое предлагает адрес назначения для пользователя.

Лучшее, что я нашел до сих пор, было следующим:

$.ajax({url: webpage ,type:'HEAD',error:function(){ alert('No go.'); }}); 

Это не проблема с 404 и 200, но если вы делаете что-то вроде 'http://xyz' для URL-адреса, оно просто зависает. Также 302 и т.п. запускают обработчик ошибок.

Это достаточно общий вопрос, который я хотел бы получить в полном примере рабочего кода, если кто-то может его создать. Это может быть удобно для многих людей.

Похоже, вы не заботитесь о содержимом веб-страницы, просто хотите узнать, существует ли она. Вот как я буду делать это в PHP – я могу остановить PHP от захвата памяти с содержимым страницы.

 /* * Returns false if the page could not be retrieved (ie., no 2xx or 3xx HTTP * status code). On success, if $includeContents = false (default), then we * return true - if it's true, then we return file_get_contents()'s result (a * string of page content). */ function getURL($url, $includeContents = false) { if($includeContents) return @file_get_contents($url); return (@file_get_contents($url, null, null, 0, 0) !== false); } 

За меньшую многословность замените содержимое вышеуказанной функции на это.

 return ($includeContents) ? @file_get_contents($url) : (@file_get_contents($url, null, null, 0, 0) !== false) ; 

См. http://www.php.net/file_get_contents для получения подробной информации о том, как указать заголовки HTTP, используя контекст потока.

Приветствия.

Сначала вам нужно проверить, существует ли страница через DNS. Вот почему вы говорите, что это «просто зависает» – он ждет тайм-аута DNS-запроса. На самом деле это не висит.

После проверки DNS проверьте, что вы можете подключиться к серверу. Это еще один длинный тайм-аут, если вы не будете осторожны.

Наконец, выполните HTTP HEAD и проверьте код состояния. Есть много, много и много особых случаев, которые вы должны здесь рассмотреть: что означает «временная внутренняя ошибка сервера» для существующей страницы? Как насчет «постоянно перемещенных»? Просмотрите коды состояния HTTP.

Я только что написал более простую версию с использованием PHP:

 function url_check($url) { $x = @fopen($url,"r"); if ($x) { $reply = 1; fclose($x); } else { $reply = 0; } return $reply; } 

Очевидно, что $url является тестовым URL-адресом, возвращает true (1) или false (0) в зависимости от существования URL-адреса.

Возможно, вы можете объединить проверку домена, а jQuery, checker домена (PHP) может ответить 1 или 0 на несуществующие домены.

например. http://webarto.com/snajper.php?domena=stackoverflow.com , вернет 1, вы можете использовать функцию размытия входа, чтобы немедленно ее проверить.