Как распечатать всю информацию из HTTP-запроса на экране, в PHP

Мне нужен PHP-код, который делает дамп всей информации в HTTP-запросе, включая заголовки и содержимое любой информации, включенной в запрос POST. В принципе, диагностический инструмент, который выплескивает именно то, что я отправляю на сервер.

У кого-нибудь есть код, который это делает?

И, наконец:

print_r($_REQUEST); 

Это касается большинства входящих элементов: PHP.net Manual: $ _REQUEST

Простым способом было бы:

 <?php print_r($_SERVER); print_r($_POST); print_r($_GET); print_r($_FILES); ?> 

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

Ну, вы можете прочитать все тело POST, как это

 echo file_get_contents( 'php://input' ); 

И, предполагая, что ваш веб-сервер Apache, вы можете читать заголовки запросов так

 $requestHeaders = apache_request_headers(); 

Никто не упоминал, как правильно сбрасывать заголовки HTTP при любых обстоятельствах.

Из спецификации CGI rfc3875, раздел 4.1.18:

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

 foreach ($_SERVER as $key => $value) { if (strpos($key, 'HTTP_') === 0) { $chunks = explode('_', $key); $header = ''; for ($i = 1; $y = sizeof($chunks) - 1, $i < $y; $i++) { $header .= ucfirst(strtolower($chunks[$i])).'-'; } $header .= ucfirst(strtolower($chunks[$i])).': '.$value; echo $header.'<br>'; } } 

Подробности: http://cmyker.blogspot.com/2012/10/how-to-dump-http-headers-with-php.html

Объединив ответы от Питера Бейли и Cmyker, вы получите что-то вроде:

 <?php foreach ($_SERVER as $key => $value) { if (strpos($key, 'HTTP_') === 0) { $chunks = explode('_', $key); $header = ''; for ($i = 1; $y = sizeof($chunks) - 1, $i < $y; $i++) { $header .= ucfirst(strtolower($chunks[$i])).'-'; } $header .= ucfirst(strtolower($chunks[$i])).': '.$value; echo $header."\n"; } } $body = file_get_contents('php://input'); if ($body != '') { print("\n$body\n\n"); } ?> 

который работает с встроенным веб-сервером php -S , что является весьма удобной функцией PHP.

Если вам нужны фактические заголовки HTTP (как запрос, так и ответ), дайте hurl.it попытку.

Вы можете использовать команду apache_request_headers() PHP, чтобы получить заголовки запросов и apache_response_headers() чтобы получить текущие заголовки ответов. Обратите внимание, что ответ может быть изменен позже в скрипте PHP, пока контент не был отправлен.

file_get_contents ('php: // input') не всегда будет работать.

У меня есть запрос с заголовками «content-length = 735», а «php: // input» – пустая строка. Это зависит от того, насколько хорош / действителен HTTP-запрос.

Кроме того, вы можете использовать get_headers () . это не зависит от apache ..

 print_r(get_headers());