- curl_getinfo
- Notes
- User Contributed Notes 13 notes
- Как получить HTTP код ответа удаленного веб-сервера из PHP?
- Домен не существует
- Доменные имена с использованием национальных наборов символов.
- PHP http_response_code() Function
- Syntax
- Parameter Values
- Technical Details
- COLOR PICKER
- Report Error
- Thank You For Helping Us!
- Как проверить код ответа сервера / узнать код ответа страницы
- Что такое код статуса HTTP?
- Проверить код ответа сервера страницы
- Узнать код ответа сервера всех страниц сайта
- Получение статуса страниц в Xenu
- Получение статуса страниц в Spider
- Массовая проверка страниц на код ответа сервера
curl_getinfo
// Check HTTP status code
if (! curl_errno ( $ch )) switch ( $http_code = curl_getinfo ( $ch , CURLINFO_HTTP_CODE )) case 200 : # OK
break;
default:
echo ‘Unexpected HTTP code: ‘ , $http_code , «\n» ;
>
>
// Close handle
curl_close ( $ch );
?>
Notes
Note:
Information gathered by this function is kept if the handle is re-used. This means that unless a statistic is overridden internally by this function, the previous info is returned.
User Contributed Notes 13 notes
Here are the response codes ready for pasting in an ini-style file. Can be used to provide more descriptive message, corresponding to ‘http_code’ index of the arrray returned by curl_getinfo().
These are taken from the W3 consortium HTTP/1.1: Status Code Definitions, found at
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
101=»Switching Protocols» [Successful 2xx]200=»OK»
201=»Created»
202=»Accepted»
203=»Non-Authoritative Information»
204=»No Content»
205=»Reset Content»
206=»Partial Content» [Redirection 3xx]300=»Multiple Choices»
301=»Moved Permanently»
302=»Found»
303=»See Other»
304=»Not Modified»
305=»Use Proxy»
306=»(Unused)»
307=»Temporary Redirect» [Client Error 4xx]400=»Bad Request»
401=»Unauthorized»
402=»Payment Required»
403=»Forbidden»
404=»Not Found»
405=»Method Not Allowed»
406=»Not Acceptable»
407=»Proxy Authentication Required»
408=»Request Timeout»
409=»Conflict»
410=»Gone»
411=»Length Required»
412=»Precondition Failed»
413=»Request Entity Too Large»
414=»Request-URI Too Long»
415=»Unsupported Media Type»
416=»Requested Range Not Satisfiable»
417=»Expectation Failed» [Server Error 5xx]500=»Internal Server Error»
501=»Not Implemented»
502=»Bad Gateway»
503=»Service Unavailable»
504=»Gateway Timeout»
505=»HTTP Version Not Supported»
And an example usage:
$ch = curl_init (); // create cURL handle (ch)
if (! $ch ) die( «Couldn’t initialize a cURL handle» );
>
// set some cURL options
$ret = curl_setopt ( $ch , CURLOPT_URL , «http://mail.yahoo.com» );
$ret = curl_setopt ( $ch , CURLOPT_HEADER , 1 );
$ret = curl_setopt ( $ch , CURLOPT_FOLLOWLOCATION , 1 );
$ret = curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , 0 );
$ret = curl_setopt ( $ch , CURLOPT_TIMEOUT , 30 );
// execute
$ret = curl_exec ( $ch );
if (empty( $ret )) // some kind of an error happened
die( curl_error ( $ch ));
curl_close ( $ch ); // close cURL handler
> else $info = curl_getinfo ( $ch );
curl_close ( $ch ); // close cURL handler
if (empty( $info [ ‘http_code’ ])) die( «No HTTP code was returned» );
> else // load the HTTP codes
$http_codes = parse_ini_file ( «path/to/the/ini/file/I/pasted/above» );
// echo results
echo «The server responded:
» ;
echo $info [ ‘http_code’ ] . » » . $http_codes [ $info [ ‘http_code’ ]];
>
Как получить HTTP код ответа удаленного веб-сервера из PHP?
Когда требуется получить HTTP код для заданной URL, то вы наверняка воспользуетесь PHP функцией get_headers($url). Дальше я расскажу о разных подводных камнях и возникающих попутных проблемах.
В первом приближении задача решается элементарно. У вас есть URL, вы запрашиваете только заголовки, т.к. вам не нужен сам документ. В заголовках можно найти и пропарсить стандартный ответ сервера, чтобы извлечь код ответа.
Скорее всего, вы действительно получите желаемое, но не всегда. Потому перейдем к рассмотрению наиболее частых коллизий.
Домен не существует
Да такое бывает, когда введенный адрес не существует. Вернее не адрес, а доменное имя сайта. Запрос посылать некуда, а вы увидите (если не отключили вывод php warnings) что то вроде следующего:
PHP вернет пустые заголовки, из которых ничего не извлечь. Как можно обработать эту ситуацию?
Тут вы уже не увидите сообщений от PHP, а в случае невозможности определить адрес сервера — будет установлено какое то кастомное значение вместо HTTP кода, чтобы иметь возможность его обработать дальше.
Доменные имена с использованием национальных наборов символов.
Функция get_headers не настолько умна, чтобы переводить ваш http://россия.рф в http://xn--h1alffa9f.xn--p1ai200.
Если вы попытаетесь запросить заголовки без перевода в нужный вид, то прошлый пример выдаст вам загадочное ‘no response’. В то время как браузер без проблем откроет сайт, т.к. умеет переводить доменные имена, в которых используются местные национальные наборы символов, отличные от латиницы.
Для конвертации используем свободно распространяемую библиотеку idna_convert. Качайте архив, распаковывайте и подключайте в ваш код.
Теперь пример выглядит следующим образом:
PHP http_response_code() Function
The http_response_code() function sets or returns the HTTP response status code.
Syntax
Parameter Values
Technical Details
Return Value: | If code is set, the previous status code is returned. If code is not set, the current status code is returned |
---|---|
PHP Version: | 5.4+ |
❮ PHP Network Reference
COLOR PICKER
Report Error
If you want to report an error, or if you want to make a suggestion, do not hesitate to send us an e-mail:
Thank You For Helping Us!
Your message has been sent to W3Schools.
Top Tutorials
Top References
Top Examples
Get Certified
W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.
Как проверить код ответа сервера / узнать код ответа страницы
Получи нашу книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».
При обращении по URL-у, сервер отдает нам не только содержимое страницы, но и передает служебную информацию, например: код статуса HTTP. Прежде, чем перейти к проверке ответа сервера, предлагаю определиться с терминами.
Что такое код статуса HTTP?
Код статуса HTTP (или код ответа сервера) — трёхзначное число, которое обозначает определенный статус запрашиваемой страницы.
HTTP/1.1 200 OK , где
HTTP/1.1 — версии протокола,
200 — код успешного выполнения запроса.
Подробнее посмотреть значения кодов ответа сервера можно в этой статье.
Замечание: важно следить за тем, чтобы страницы вашего сайта отдавали правильные коды ответа сервера.
- Существующая страница — должна отдавать код ответа сервера 200;
- Несуществующая страница — 404 ответ сервера;
- С url-f старой страницы на актуальную — 301.
В этой статье мы рассмотрим различные задачи, связанные с проверкой ответа сервера, а также поговорим о полезных инструментах, которые помогут нам решить их.
Проверить код ответа сервера страницы
Для того чтобы узнать код ответа сервера страницы, воспользуемся популярным онлайн сервисом. Mainspy позволяет определить ответ сервера по заданному урлу, что может быть полезно для определения наличия страницы или работоспособности сайта в целом.
Все довольно просто: необходимо вставить URL страницы и нажать кнопку “Проверить”.
Также можно воспользоваться проверкой ответа сервера в Яндекс Вебмастере , инструмент доступен только для подтверждённых сайтов.
Узнать код ответа сервера всех страниц сайта
Для пакетной проверки ответа сервера вышеизложенный сервис нам, к сожалению, не подойдет, поэтому воспользуемся десктопными приложениями Xenu или Spider, которые помогут пропарсить все страницы сайта и проверить код ответа всех страниц.
Получение статуса страниц в Xenu
В главном меню перейдем «File- Check URL». Введем адрес сайта и запустим проверку урлов на ответ сервера
Результат проверки статуса ответа сервера можно будет увидеть в колонке «Status».
Получение статуса страниц в Spider
Запускаем приложение, вводим URL. Результат смотрим в колонке “Статус”.
Массовая проверка страниц на код ответа сервера
Используется для проверки группы Url-ом нескольких сайтов или вполне конкретных страниц. В решении этой задаче нам поможет этот сервис. Вводим списком адреса.
Есть небольшое ограничение: максимальное количество Url-ов составляет 100 адресов.
Но это совсем не проблема. Я предлагаю вам решение, которое вы можете реализовать на вашем веб-сервере (необходимы небольшие знания PHP).
Рассмотрим функцию get_headers, которая возвращает все заголовки, посланные сервером в ответ на HTTP запрос.
Пример: Возвращает код ответа сервера заданного URL-а.
<!--?php ini_set('max_execution_time', 900); $url='//semantica.in/'; $code=get_headers($url); echo($code[0]); ?>
Немного доработав php код , мы сможем списком вводить URL-ы и получать коды ответа сервера:
Мы рассмотрели популярные задачи, которые могут возникнуть перед вебмастером. Надеюсь, что информация окажется для вас полезной.
– Только качественный трафик из Яндекса и Google
– Понятная отчетность о работе и о планах работ
– Полная прозрачность работ
Где искать .htaccess Файл лежит в корневой папке. Таким образом он действует на все содержимое вложенных папок. Когда для какого-то каталога требуется сделать отдельные настройки, в него можно поместить еще один htaccess. Он будет приоритетным для данного каталога по сравнению с общим файлом, лежащем в корневой папке. Доступ к содержимому сервера осуществляется через любую программу-клиент типа Total Commander, FileZilla. Если…
Чтобы понять, что такое выделенный сервер и о чем он отличается услуг обычного хостинга, представьте себе море. Если его разделить на части с помощью плавучих канатов, то каждая из них – это виртуальный сервер. С одной стороны, он автономен, с другой – если вода в море нагреется или остынет, это же неизбежно случится и с выделенной частью. Выделенный же сервер…
Если сторонний пользователь пытается разместить на вашем сайте комментарий, то после его отправки сообщение проверяется вручную модератором, а только потом публикуется. Например, если на заборе написано, что «Вася – дурак», то данное сообщение не прошло премодерацию. Если бы она была произведена, то после проверки умственных способностей Васи хозяином забора был бы отражен один из двух вердиктов: «Вася – глупый человек»…