2013-03-23 2 views
0

Я использую Curl, чтобы узнать код состояния веб-сайта. Это в ответ на ввод пользователем URL-адреса в форме, в основном я просто хочу проверить, что URL-адрес действителен, поэтому я думал, что лучший способ - это разрешить только определенные коды, которые, вероятно, будут в порядке. Но это не работает так хорошо, как ожидалось. Для EG tesco возвращает 503, Marks & Sparks a 405. Так что кажется, что может быть намного больше кодов статуса, которые на самом деле хорошо, но которые, похоже, не подходят для меня.какие http-коды статуса принимать

Итак ... мой вопрос в том, какие коды статуса http я должен доверять. Или я должен делать это наоборот и передавать все, кроме некоторых определенных кодов статуса?

Для полноты и в случае, если это помогает любому, вот как я получаю код состояния:

$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_NOBODY, true); 
$result = curl_exec($curl); 
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
if ($statusCode == 200 || $statusCode == 300 || $statusCode == 301 || $statusCode == 302 || $statusCode == 303 || $statusCode == 307 || $statusCode ==) { 
    $ret = true; 
} 
+1

определить "действителен" для URL? – 2013-03-23 02:04:25

+0

Ну, я проверил формат с регулярным выражением, поэтому я просто хочу проверить, есть ли что-то на другом конце. например, 200 - это хорошо. 301 в порядке, потому что это перенаправление, которое, вероятно, указывает куда-то более подходящее. Но список кодов большой. Есть ли больше кодов статуса, которые я должен отказать, чем принимать, или наоборот? –

+0

у вас еще нет ответа –

ответ

2

Проверка существования в URL-адрес с помощью CURL
Приведи: http://www.php.net/manual/en/function.file-exists.php#74469

<?php 
function url_exists($url) { 
    if (!$fp = curl_init($url)) return false; 
    return true; 
} 
?> 

Некоторые статусные коды и ссылки в соответствии с вашими сомнениями

200 OK 

Запрос удалось. Информация, возвращаемая с ответом, зависит от метода, используемого в запросе, например:

GET объект, соответствующий запрашиваемому ресурсу, отправляется в ответе;

HEAD поля заголовка объекта, соответствующие запрашиваемому ресурсу, отправляются в ответе без какого-либо тела сообщения;

POST объект, описывающий или содержащий результат действия;

TRACE сущность, содержащая сообщение запроса, полученное конечным сервером.

201 Created 

Запрос был выполнен и в результате новый ресурс создается. На вновь созданный ресурс можно ссылаться на URI (ы), возвращенные в сущности ответа, с самым конкретным URI для ресурса, заданного полем заголовка Location.

202 Accepted 

Запрос был принят для обработки, но обработка не была завершена. Запрос может или не может быть впоследствии применен, поскольку это может быть запрещено, когда обработка фактически имеет место. Не существует возможности для повторной отправки кода состояния из асинхронной операции, такой как это.

203 Non-Authoritative Information 

Возвращенные метаинформации в сущности-заголовке не окончательный набор, доступный на сервере происхождения, но собирается из локальных или третьей стороны копии. Представленный набор МОЖЕТ быть подмножеством или надмножеством исходной версии. Например, в том числе локальная информация аннотации о ресурсе может привести к расширению метаинформации, известной серверу происхождения.Использование этого кода ответа не требуется и подходит только тогда, когда ответ будет равен 200 (OK).

204 No Content 

Сервер выполнил запрос, но не нужно возвращать тело объекта, и, возможно, захотите вернуться обновленной метаинформации. Ответ МОЖЕТ включать новую или обновленную метаинформацию в виде заголовков сущностей, которые, если они ДОЛЖНЫ быть связаны с запрошенным вариантом.

205 Reset Content 

Сервер выполнил запрос и пользовательский агент должен сбросить вид документа, который инициировал запрос к отправке. Этот ответ в первую очередь предназначен для того, чтобы разрешить ввод действий для действий через пользовательский ввод, а затем очистить форму, в которой вводится вход, чтобы пользователь мог легко инициировать другое действие ввода. Ответ НЕ ДОЛЖЕН включать объект.

Читать это

http://www.seocentro.com/articles/apache/http-status-codes.html
http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

+0

Спасибо за ответ. Я прочитал все эти ссылки (хорошо их видел) Я понимаю, что такое коды, я просто хочу знать, какие из них я должен принять. –

+0

Я обновил ответ, если он удовлетворяет ваш квест, не забудьте принять его, спасибо yoyo! –

Смежные вопросы