Для того чтобы узнать гео принадлежность используй сервисы WhoIS и сокеты php.
По второму вопросу:
get_headers
(PHP 5)
get_headers — Возвращает заголовки из ответа сервера на HTTP-запрос Описание
Код | array get_headers ( string $url [, int $format ] )
|
get_headers() возвращает массив с заголовками из ответа сервера на HTTP-запрос.
Список параметров url
Целевой URL. format
Если необязательный параметр format установлен в 1, get_headers() разберет ответ сервера и установит ключи для возвращаемого массива.
Возвращаемые значения Возвращает список или ассоциативный массив с заголовками ответа при нормальном завершении и FALSE, если возникла ошибка.
Код | Список изменений Версия Описание 5.1.3 Эта функция теперь использует stream context по-умолчанию, который может быть установлен или изменен при помощи функции stream_context_get_default().
|
Примеры
Пример #1 Пример использования get_headers()
Код | <?php $url = 'http://www.example.com';
print_r(get_headers($url));
print_r(get_headers($url, 1)); ?>
|
Результатом выполнения данного примера будет что-то подобное:
Код | Array ( [0] => HTTP/1.1 200 OK [1] => Date: Sat, 29 May 2004 12:28:13 GMT [2] => Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) [3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT [4] => ETag: "3f80f-1b6-3e1cb03b" [5] => Accept-Ranges: bytes [6] => Content-Length: 438 [7] => Connection: close [8] => Content-Type: text/html )
Array ( [0] => HTTP/1.1 200 OK [Date] => Sat, 29 May 2004 12:28:14 GMT [Server] => Apache/1.3.27 (Unix) (Red-Hat/Linux) [Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT [ETag] => "3f80f-1b6-3e1cb03b" [Accept-Ranges] => bytes [Content-Length] => 438 [Connection] => close [Content-Type] => text/html )
|
Элемент [0] и содержит код ошибки сервера.
Вот коды ошибок сервера:
Код | 100-199 Информационные. Сообщает агенту что запрос агента принят и обрабатывается 100 - Continue - начальная часть запроса принята, и клиент может продолжать передачу запроса 101 - Switching Protocols - сервер выполняет требование клиента и переключает протоколы в соответствии с указанием, данным в поле заголовка Upgrade
200-299 Запрос агента обработан успешно, сервер отправил клиенту запрашиваемый документ 200 - OK - запрос клиента обработан успешно и ответ сервера содержит затребованные данные 201 - Created - этот код состояния используется в случае создания нового URI. Вместе с этим кодом результата сервер выдает заголовок Location, который содержит информацию о том, куда были помещены новые данные 202 - Accepted - запрос принят, но обрабатывается не сразу. В теле содержимого ответа сервера может быть дана дополнительная информация о данной транзакции. Гарантии того, что сервер в конечном итоге удовлетворит запрос, нет, даже несмотря на то, что на момент приема запрос выглядел допустимым 203 - Non-Authoritative Information - информация в заголовке содержимого взята из локальной копии или у третьей стороны, а не с исходного сервера 204 - No Content - ответ содержит код состояния и заголовок, но тело содержимого отсутствует. При получении этого ответа браузер не должен обновлять свой документ. Обработчик чувствительных областей изображений может возвращать этот код, когда пользователь щелкает на бесполезных или пустых участках изображения 205 - Reset Content - браузер должен очистить форму, используемую в данной транзакции, для дополнительных входных данных. Полезен для CGI-приложений, требующих ввода данных 206 - Partial Content - сервер возвращает лишь часть данных затребованного объема. Используется в ответе на запрос с указанием заголовка Range. Сервер должен указать диапазон, включенный в ответ, в заголовке Content-Range
300-399 Запрос агента изменен и агенту нужно предпринять некоторые действия для удовлетворения измененного запроса 300 - Multiple Choices - затребованный URI обозначает более одного ресурса. Например, URI может обозначать документ, переведенный на несколько языков. В теле содержимого, возвращенном сервером, может находиться перечень более конкретных данных о том, как выбрать ресурс правильно 301 - Moved Permanently - затребованный URI уже не используется сервером, и указанная в запросе операция не выполнена. Новое местонахождение затребованного документа указывается в заголовке Location (см. настройки файла .htaccess). Во всех последующих запросах данного документа следует указывать новый URI 302 - Moved Temporarily - затребованный URI перемешен, но лишь временно. Заголовок Location указывает на новое местонахождение. Сразу же после получения этого кода состояния клиент должен разрешить запрос при помощи нового URI (см. настройки файла .htaccess), но во всех последующих запросах необходимо пользоваться старым URI 303 - See Other - затребованный URI можно найти по другому URI, указанному в заголовке Location (см. настройки файла .htaccess). Его следует выбрать методом GET по данному ресурсу 304 - Not Modified - это код ответа на заголовок lf-Modified-Since, если URI не изменялся с указанной даты. Тело содержимого не посылается, и клиент должен использовать свою локальную копию 305 - Use Proxy - доступ к затребованному URI должен осуществляться через proxy-сервер, указанный в заголовке Location
400-499 Проблемы при попытке выполнить запрос 400 - Bad Request - сервер не понял запрос 401 - Unauthorized - не установлена подлинность пользователя. Ответ включает заголовок WWW-Authenticate, который содержит вызов к ресурсу запроса 402 - Payment Required - не используется в данное время 403 - Forbidden - сервер не имеет возможности ответа и запрос отклонён 404 - Not Found - по данному адресу ресурса нет 405 - Method Not Allowed - метод запроса для данного адреса не предусмотрен 406 - Not Acceptable - в запросе нет согласованных с ответом объектов содержимого 407 - Proxy Authentication Required - необходимо установить подлинность клиента. Используются Proxy-Authorization и Proxy-Authenticate 408 - Request Timeout - запрос не был произведён в установленое сервером время 409 - Conflict - произошёл конфликт между запросом и состоянием ресурса в данный момент 410 - Gone - ресурс удалён навсегда 411 - Length Required - сервер не принимает запрос с неуказанным Content-Length. Необходимо указать корректный Content-Length в заголовке запроса 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 - время ожидания истекло
500-599 Ошибки сервера 500 - Internal Server Error - в процессе обработки запроса произошёл внутренний сбой на сервере 501 - Not Implemented - запрашиваемая клиентом функция не поддерживается сервером или сервер не может распознать метод запроса 502 - Bad Gateway - произошёл сбой на сервере, который используется в качестве шлюза 503 - Service Unavailable - в данный момент какая-либо из служб сервера недоступна 504 - Gateway Timeout - шлюз превысил максимальный лимит отведённого времени 505 - HTTP Version Not Supported - версия HTTP, указанная в запросе, не поддерживается сервером
|
|