PHP _POST['']接受不到数据

sign=27c45caa483a1582eee4aaea17&result=2000&usercode=A00&value=5&orderno=dn202900501&datetime=20161102142026&billid=R163734&accountvalue=4.3&info=%D6%A7%B8%B6%B3%C9%B9%A6&version=1.0&mode=q

用file_get_contents('php://input')方法可以得到以上数据,用_POST['']可以得到每一项的值,唯独获取不到info的值,求解!!

阅读 3.4k
5 个回答
$a = 'sign=27c45caa483a1582eee4aaea17&result=2000&usercode=A00&value=5&orderno=dn202900501&datetime=20161102142026&billid=R163734&accountvalue=4.3&info=%D6%A7%B8%B6%B3%C9%B9%A6&version=1.0&mode=q';
parse_str(iconv('GB2312', 'UTF-8', urldecode($a)),$out);
print_r($out);
Array
(
    [sign] => 27c45caa483a1582eee4aaea17
    [result] => 2000
    [usercode] => A00
    [value] => 5
    [orderno] => dn202900501
    [datetime] => 20161102142026
    [billid] => R163734
    [accountvalue] => 4.3
    [info] => 支付成功
    [version] => 1.0
    [mode] => q
)

直接打印下$_POST看下.

print_r($_POST);

我测试了下,你的info是用的gb2312编码,可能和编码不对有关,所以没获取到。

#gb2312
支付成功

#utf-8
֧���ɹ�

info是经过urlencode加密过的,从post中取info的值,然后用urldecode解码,最后打印print_r

新手上路,请多包涵

你把info的值转换成英文或者数字看看去不去得到,取不到,是空值,还是index不存在?

只有 Content-Type 为 application/x-www-form-urlencodedmultipart/form-data 的 HTTP 请求才会放入到 $_POST 中,其它 Content-Type 类型的请求可以通过 php://input 或者 $HTTP_RAW_POST_DATA 的方式获取。

// 需要注意的是 php://input 不能用于 enctype="multipart/form-data"
$value = json_decode(file_get_contents('php://input'), true);
$info = $value['info'];
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题