php – 没有Content-type的空$_POST

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 没有Content-type的空$_POST脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我发出POST请求,其中未在请求标头中设置content-tyPE,则变量$_POST仍为空. @H_304_5@

问题:如何强制@L_419_0@填充$_POST?

我遇到了使用XDomainRequest制作Javascript AJAX请求的问题,您无法定义任何标头.只是为了让您更容易理解这个问题,您可以通过这种方式在PHP中使用Javascript来模拟相同的效果

$data = 'test=1';

$fp = fsockopen('www.yourpage.org',80,$errno,$errstr,5);
fputs($fp,"POST /test_out.PHP HTTP/1.1\r\n");
fputs($fp,"Host: www.yourpage.org\r\n");
//fputs($fp,"Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp,"Content-length: ". strlen($data) ."\r\n");
fputs($fp,"Connection: close\r\n\r\n");
fputs($fp,$data);

while(!feof($fp)) { echo fgets($fp,128); }
fclose($fp);

test_out.PHP会的

var_dump($_POST);

没有正确的内容类型,$_POST中的变量会神奇地消失.

这更像是一个教育问题.我问这个是因为这里的大多数人无法想象内容类型有这种效果.我被要求’回来说实话’.所以,你走了.

解决方法

如果必须,可以使用apache mod_headers覆盖/注入必要的头.或者以其他方式手动重建$_POST数组. (另见 userland multipart/form-data handler)

如果它总是urlencoded,只需从PHP:// input(包含原始POST请求体)中读取并使用parse_str

parse_str(file_get_contents("PHP://input"),$_POST);

应该重新创建POST数组,就像PHP一样.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 没有Content-type的空$_POST全部内容,希望文章能够帮你解决php – 没有Content-type的空$_POST所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。