Home  >  Article  >  Backend Development  >  PHP gets the original text of the HTTP request_PHP tutorial

PHP gets the original text of the HTTP request_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 14:53:47756browse

1. Get the request line: Method, URI, protocol

can be obtained from the super variable $_SERVER. The values ​​of the three variables are as follows:

$_SERVER['REQUEST_METHOD']. ' '.$_SERVER['REQUEST_URI'].' '.$_SERVER['SERVER_PROTOCOL']."rn";
2. Get all Headers

PHP has a built-in function getallheader(), which is An alias of the apache_request_headers() function that can return all headers of the HTTP request in the form of an array. But this function can only work under Apache. If you change to Nginx or the command line, an error that the function does not exist will be reported directly.

A more general method is to extract it from the super variable $_SERVER. The key values ​​​​of the headers all start with "HTTP_". You can obtain all the headers based on this feature. The code is as follows:

function get_all_headers() {
$headers = array();

foreach($_SERVER as $key => $value) {
if(substr ($key, 0, 5) === 'HTTP_') {
$key = substr($key, 5);
$key = strtolower($key);
$key = str_replace( '_', ' ', $key);
$key = ucwords($key);
$key = str_replace(' ', '-', $key);

$headers [$key] = $value;
}
}

return $headers;
}
3. Get Body

Officially provides a get request Body method, namely:

file_get_contents('php://input')
4. Final code

/**
* Get the original text of the HTTP request
* @return string
*/
function get_http_raw() {
$raw = '';

// (1) Request line
$raw .= $_SERVER['REQUEST_METHOD'].' '.$_SERVER['REQUEST_URI'].' '.$_SERVER['SERVER_PROTOCOL']."rn";

// (2) Request Headers
foreach($_SERVER as $key => $value) {
if(substr ($key, 0, 5) === 'HTTP_') {
$key = substr($key, 5);
$key = str_replace('_', '-', $key);

$raw .= $key.': '.$value."rn";
}
}

// (3) Blank line
$raw .= "rn";

// (4) Request Body
$raw .= file_get_contents('php://input');

return $raw;
}

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/364740.htmlTechArticle1. Get the request line: Method, URI, and protocol can be obtained from the super variable $_SERVER. The three variables The values ​​are as follows: $_SERVER['REQUEST_METHOD'].' '.$_SERVER['REQUEST_URI'].' '.$_SERVER['...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn