PHP取得HTTP请求的原文

1. 取得请求行:Method、URI、协议

可以从超级变量$_SERVER中获得,三个变量的值如下:

$_SERVER[‘REQUEST_METHOD’].’ ‘.$_SERVER[‘REQUEST_URI’].’ ‘.$_SERVER[‘SERVER_PROTOCOL’]."";
2. 取得所有Header

PHP有个内置函数getallheader(),是apache_request_headers()函数的一个别名,可以将HTTP请求的所有Header以数组形式返回。但这个函数只能工作在Apache下,如果换了Nginx或者命令行,会直接报函数不存在的错误。

比较通用的方法是,从超级变量$_SERVER中提取出来,有关Header的键值都是“HTTP_”开头的,可以根据此特点取得所有的Header。代码如下:

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. 取得Body

官方提供了一种获取请求Body的方法,即:

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’]."";

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

$raw .= $key.’: ‘.$value."";
}
}

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

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

return $raw;
}

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » PHP取得HTTP请求的原文

71 评论

  1. lamictal pills mebendazole us tretinoin over the counter

  2. hytrin 5mg price cheap actos order azulfidine 500 mg online cheap

  3. order fosamax 70mg sale fosamax pills cheap famotidine 20mg

  4. order benicar 10mg without prescription diamox 250 mg cheap buy diamox 250mg online

  5. buy generic revia revia price aripiprazole over the counter

  6. losartan price esomeprazole us buy topamax 100mg online cheap

  7. ranitidine 150mg without prescription celecoxib 200mg pill order celebrex 200mg pills

  8. cephalexin 125mg cost cleocin price erythromycin sale

  9. best casino online tadalafil cost purchase cialis online cheap

  10. order deltasone 40mg without prescription amoxicillin 250mg uk amoxicillin 1000mg brand

  11. order tadacip 10mg generic buy diclofenac 50mg purchase indomethacin online cheap

  12. buy cialis 20mg online cheap Low price cialis online casino with free signup bonus real money usa

  13. Thank you for great article. Hello Administ . Metropol Halı Karaca Halı Öztekin ve Selçuklu Halı Cami Halısı ve Cami Halıları Türkiye’nin En Büyük Cami Halısı Fabrikasıyız…

  14. azathioprine 25mg pills buy naproxen pill buy naprosyn 250mg online cheap

  15. При психоанализе о многом может сказать такое явление, как отрицание.

    Аналогичным этому процессу является ситуация, когда человек, как говорится, «накликает» беду.
    «Радостно, что у меня так давно не болела голова!» – это
    отрицание может быть предчувствием приступа.

    Отрицание – это как бы сигнал бессознательного, его предупреждение.
    Но этот сигнал пока еще нельзя назвать
    признанием того, что было вытеснено психическим
    механизмом защиты. Психоаналитик должен
    помочь преобразовать это отрицание в
    осознание того, что хочет сказать
    бессознательное и принять
    вытесненное. Почему я потеряла интерес к жизни?

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡