ホームページ >バックエンド開発 >PHPチュートリアル >PHPのヘッダ情報の設定とリターンヘッダ情報の取得方法
この記事では、PHP でヘッダー情報を設定し、返されたヘッダー情報を取得する方法を主に紹介します。PHP のカールベースのヘッダー情報の操作テクニックを例とともに説明します。 PHP の情報とヘッダー情報を返す Get メソッドの取得方法。参考のために皆さんと共有してください。詳細は次のとおりです:
リクエストのヘッダー情報を設定するには、header 関数を使用することができます。fsockopen を使用することができます。curl を使用することができます。この記事では主に使用法について説明します。 curl を使用してヘッダー情報を設定し、返されたヘッダー情報を取得します。
1. 要求側は、独自のヘッダー情報 header.php<?php
function FormatHeader($url, $myIp = null,$xml = null)
{
// 解悉url
$temp = parse_url($url);
$query = isset($temp['query']) ? $temp['query'] : '';
$path = isset($temp['path']) ? $temp['path'] : '/';
$header = array (
"POST {$path}?{$query} HTTP/1.1",
"Host: {$temp['host']}",
"Content-Type: text/xml; charset=utf-8",
'Accept: */*',
"Referer: http://{$temp['host']}/",
'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)',
"X-Forwarded-For: {$myIp}",
"Content-length: 380",
"Connection: Close"
);
return $header;
}
$interface = 'http://localhost/test/header2.php';
$header = FormatHeader($interface,'10.1.11.1');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $interface);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //设置头信息的地方
curl_setopt($ch, CURLOPT_HEADER, 0); //不取得返回头信息
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
var_dump($result);
?>
<?php print_r($_SERVER); //头信息里面有内容绝大部分是放在系统变量里面的 ?>を取得します。 php request
string(1045) "Array ( [HTTP_HOST] => localhost [CONTENT_TYPE] => text/xml; charset=utf-8 [HTTP_ACCEPT] => */* [HTTP_REFERER] => http://localhost/ [HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1) [HTTP_X_FORWARDED_FOR] => 10.1.11.1 [CONTENT_LENGTH] => 380 [PATH] => /usr/local/bin:/usr/bin:/bin [SERVER_SIGNATURE] => <address>Apache/2.2.16 (Ubuntu) Server at localhost Port 80</address> 。。。。。。。。。。。。。。。。。。。。。。。。。。。。 )上記のものは、明らかに私が設定したヘッダー情報であることがわかります。
4. 返されたヘッダー情報を取得します
コードをコピーします
curl_setopt($ch, CURLOPT_HEADER, 1); //取得返回头信息CURLOPT_HEADER を 1 に設定します。取得された結果では、この情報が表示配列の前に表示されます。
string(1239) "HTTP/1.1 200 OK Date: Fri, 27 May 2011 01:57:57 GMT Server: Apache/2.2.16 (Ubuntu) X-Powered-By: PHP/5.3.3-1ubuntu9.5 Vary: Accept-Encoding Content-Length: 1045 Content-Type: text/html Array ( [HTTP_HOST] => localhost [CONTENT_TYPE] => text/xml; charset=utf-8 [HTTP_ACCEPT] => */*
5 、ヘッダー情報の $_SERVER 部分が利用できません
header.php を修正
<?php function FormatHeader($url, $myIp = null,$xml = null) { // 解悉url $temp = parse_url($url); $query = isset($temp['query']) ? $temp['query'] : ''; $path = isset($temp['path']) ? $temp['path'] : '/'; $header = array ( "POST {$path}?{$query} HTTP/1.1", "Host: {$temp['host']}", "Content-Type: text/xml; charset=utf-8", 'Accept: */*', "Referer: http://{$temp['host']}/", 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)', "X-Forwarded-For: {$myIp}", "Content-length: " . strlen($xml) ."\r\n\r\n" .$xml, //修改1 "Connection: Close" ); return $header; } $xml = '<?xml version="1.0" encoding="utf-8"?> //修改2 <profile> <sha1>adsfadsf</sha1> <user_id>asdfasdf</user_id> <album_id>asdf</album_id> <album_name>asdf</album_name> <tags>asdfasd</tags> <title>asdfasdf</title> <content>asdfadsf</content> <type>asdfasdf</type> <copyright>asdfasdf</copyright> </profile>'; $interface = 'http://localhost/test/header2.php'; $header = FormatHeader($interface,'10.1.11.1',$xml); //修改3 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $interface); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //设置头信息的地方 curl_setopt($ch, CURLOPT_HEADER, 0); //不取得返回头信息 curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); var_dump($result); ?>この場合、header2.php で $_SERVER を出力してもヘッダー情報の xml を出力できません。このとき、$xmlの内容が取得できるように、header2.php
$raw_post_data = file_get_contents('php://input', 'r'); var_dump($raw_post_data);の後に以下の2行を追加し、$xmlの内容のみを取得するようにします。 関連する推奨事項:
PHP が Cookie の HTTPONLY 属性を設定する方法の詳細な説明
php のサーバー (Apache/Nginx) 環境変数を設定する
以上がPHPのヘッダ情報の設定とリターンヘッダ情報の取得方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。