> 백엔드 개발 > PHP 튜토리얼 > PHP는 HTTP request_php 기술의 원본 텍스트 얻기를 구현합니다.

PHP는 HTTP request_php 기술의 원본 텍스트 얻기를 구현합니다.

WBOY
풀어 주다: 2016-05-16 20:38:09
원래의
1076명이 탐색했습니다.

이 기사의 예에서는 PHP에서 HTTP 요청의 원본 텍스트를 얻는 방법을 설명합니다. 구체적인 단계는 다음과 같습니다.

1. 요청 라인 가져오기: 메서드, URI, 프로토콜

은 슈퍼 변수 $_SERVER에서 얻을 수 있습니다. 세 변수의 값은 다음과 같습니다.

$_SERVER['REQUEST_METHOD'].' '.$_SERVER['REQUEST_URI'].' '.$_SERVER['SERVER_PROTOCOL']."\r\n"; 

로그인 후 복사

2. 모든 헤더 가져오기

PHP에는 apache_request_headers() 함수의 별칭인 getallheader() 함수가 내장되어 있으며, 이 함수는 HTTP 요청의 모든 헤더를 배열 형식으로 반환할 수 있습니다. 하지만 이 기능은 Apache에서만 작동합니다. Nginx나 명령줄로 변경하면 해당 기능이 없다는 오류가 직접 보고됩니다.

더 일반적인 방법은 슈퍼 변수 $_SERVER에서 추출하는 것입니다. 헤더의 키 값은 모두 "HTTP_"로 시작합니다. 이 기능을 기반으로 모든 헤더를 얻을 수 있습니다.

구체적인 코드는 다음과 같습니다.

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. 신체 획득

요청 본문을 얻는 방법을 공식적으로 제공합니다.

file_get_contents('php://input') 

로그인 후 복사

4. 최종 완성코드는 다음과 같습니다.

/** 
* 获取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; 
}

로그인 후 복사

관심 있는 독자는 이 기사에 설명된 예제를 디버그하여 이해를 심화할 수 있습니다. 나는 이것이 모든 사람의 PHP 프로그래밍에 도움이 될 것이라고 믿습니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿