Home >Backend Development >PHP Tutorial >PHP implementation to obtain the original text of HTTP request, _PHP tutorial

PHP implementation to obtain the original text of HTTP request, _PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:20:42976browse

PHP implements obtaining the original text of the HTTP request,

The example in this article describes the method of obtaining the original text of HTTP request in PHP. The specific steps are as follows:

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']."\r\n"; 

2. Get all Headers

PHP has a built-in function getallheader(), which is an alias of the apache_request_headers() function, which can return all the 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 Header all start with "HTTP_". You can obtain all the Headers based on this feature.

The specific 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. Obtain Body

Officially provides a method to obtain the request body, namely:

file_get_contents('php://input') 

4. The final complete code is as follows:

/** 
* 获取HTTP请求原文 
* @return string 
*/ 
function get_http_raw() { 
$raw = ''; 

// (1) 请求行 
$raw .= $_SERVER['REQUEST_METHOD'].' '.$_SERVER['REQUEST_URI'].' '.$_SERVER['SERVER_PROTOCOL']."\r\n"; 

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

$raw .= $key.': '.$value."\r\n"; 
} 
} 

// (3) 空行 
$raw .= "\r\n"; 

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

return $raw; 
}

Interested readers can debug the examples described in this article to deepen their understanding. I believe it will be helpful to everyone's PHP programming.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/865617.htmlTechArticlePHP implements obtaining the original text of HTTP request. This article describes the method and specific steps of PHP obtaining the original text of HTTP request. As follows: 1. Obtain the request line: Method, URI, and protocol can be obtained from the super...
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