手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

使用PHP得到所有的HTTP请求头

首页 > PHP >

PHP中一般采用getallheaders来获取头部,但事实上,有些模式下是获取不到的(以前真没有注意过在fastcgi下这个函数不能用,当然我现在也没有测试。是老王说的)

他说:

在PHP里,想要得到所有的HTTP请求头,可以使用getallheaders方法,不过此方法并不是在任何环境下都存在,比如说,你使用fastcgi方式运行PHP的话,就没有这个方法,所以说我们还需要考虑别的方法,幸运的是$_SERVER里有我们想要的东西,它里面键名以HTTP_开头的就是HTTP请求头:

$headers = array();
foreach (
$_SERVER as $key => $value) {
    if (
'HTTP_' == substr($key, 0, 5)) {
       
$headers[str_replace('_', '-', substr($key, 5))] = $value;
    }
}


代码很简单,需要说明的是RFC里明确指出了信息头的名字是不区分大小写的。

不过并不是所有的HTTP请求头都是以HTTP_开头的的键的形式存在与$_SERVER里,比如说Authorization,Content-Length,Content-Type就不是这样,所以说为了取得所有的HTTP请求头,还需要加上下面这段代码:

if (isset($_SERVER['PHP_AUTH_DIGEST'])) {
    
$header['AUTHORIZATION'] = $_SERVER['PHP_AUTH_DIGEST']);
} elseif (isset(
$_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
    
$header['AUTHORIZATION'] = base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . $_SERVER['PHP_AUTH_PW']));
}
if (isset(
$_SERVER['CONTENT_LENGTH'])) {
    
$header['CONTENT-LENGTH'] = $_SERVER['CONTENT_LENGTH'];
}
if (isset(
$_SERVER['CONTENT_TYPE'])) {
    
$header['CONTENT-TYPE'] = $_SERVER['CONTENT_TYPE'];
}


搞定!

网址为:http://hi.baidu.com/thinkinginlamp/blog/item/c0bff01f3beb66f2e1fe0b7e.html




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

Tags: php, header, getallheaders

« 上一篇 | 下一篇 »

只显示10条记录相关文章

我为什么会选用phpstorm (浏览: 53373, 评论: 5)
快速生成目录树 (浏览: 47390, 评论: 7)
通过file_get_contents来Post数据的实例 (浏览: 47055, 评论: 5)
PHP导入导出Excel方法 (浏览: 45859, 评论: 3)
PHP的XSS攻击过滤函数 (浏览: 43362, 评论: 2)
PHP中Eval的作用 (浏览: 42221, 评论: 4)
超详细:在Mac OS X中配置Apache + PHP + MySQL (浏览: 41445, 评论: 1)
PHP常见错误(二) (浏览: 40476, 评论: 1)
PHP sendmail (浏览: 38509, 评论: 7)
几个ZendStudio使用教程 (浏览: 37072, 评论: 0)

3条记录访客评论

过来看看,内容不错.

Post by rainyluo on 2016, June 2, 3:15 PM 引用此文发表评论 #1

你幸福了,儿子很帅.
我还在为爱情发愁呢,最近女女要求我拿个QQ空间密码,于是想到了拿SID,我自己写的代码获取不到,复制你的代码页不行[貌似还有错,多了几个括号].结果不行.手机QQ测试了下,腾讯对于外部http地址采用了跳转的方式

Post by 开山刀 on 2012, August 20, 11:26 PM 引用此文发表评论 #2

记录SID正需要,测试后再来聊聊

Post by 瑞士军刀 on 2012, August 20, 7:14 PM 引用此文发表评论 #3


发表评论

评论内容 (必填):