Коды ответа сервера/коды состояния http (101, 200, 404 и т. д.) следует отправлять в заголовках при каждом взаимодействии между пользователем и сервером. Как можно отслеживать коды из PHP, чтобы, если код ошибки был отправлен, его можно было связать с действиями пользователя, зарегистрированными веб-приложением, и отреагировать соответствующим образом, скажем, заблокировав или перенаправив пользователя, получающего повторяющийся 403 (запрещено) коды, пытаясь получить доступ к вещам на сервере, которых не должно быть?
Можно ли отслеживать коды ответа сервера (коды состояния http) из PHP и как это сделать?
Ответы (2)
Проверить http_response_code
:
* Если вы не передадите никаких параметров, то http_response_code получит текущий код состояния. Если вы передадите параметр, он установит код ответа.*
http://php.net/manual/en/function.http-response-code.php
В основном никак, так как заголовки отправляются веб-сервером до, когда файл PHP анализируется и генерируется «настоящий» вывод. Вы можете использовать метод http_response_code()
, но учтите следующее: если вы хотите получить доступ к папке, для которой у вашего www-data
нет прав на чтение, вы получите 403 Forbidden
. Это сообщение веб-сервера, PHP даже не трогается (потому что для веб-сервера он даже не существует).
Единственный способ перехватить эти события, если вы специально используете собственный ErrorDocument
a> это ваша конфигурация или если коды ответов отправляются файлом PHP:
if ( !$something )
header("HTTP/1.1 403 Forbidden");
access_log
? Я предполагаю, что вы можете изменить файлphp.ini
и добавитьauto_append_file = mylog.php
, после чего вы сможете сохранить найденные коды ответов. - person Dave Chen   schedule 17.06.2013