加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PayPal PHP IPN示例是什么POST序列化问题?

发布时间:2020-12-13 13:58:33 所属栏目:PHP教程 来源:网络整理
导读:PayPal的 PHP IPN侦听器的示例代码在顶部有这个注释/代码: // reading posted data from directly from $_POST causes serialization // issues with array data in POST// reading raw POST data from input stream instead. $raw_post_data = file_get_co
PayPal的 PHP IPN侦听器的示例代码在顶部有这个注释/代码:
// reading posted data from directly from $_POST causes serialization 
// issues with array data in POST
// reading raw POST data from input stream instead. 
$raw_post_data = file_get_contents('php://input');
$raw_post_array = explode('&',$raw_post_data);
$myPost = array();
foreach ($raw_post_array as $keyval) {
  $keyval = explode ('=',$keyval);
  if (count($keyval) == 2)
     $myPost[$keyval[0]] = urldecode($keyval[1]);
}

有人可以解释这个评论引用的序列化问题吗?虽然我可以这样做,我会觉得更加舒服,知道为什么应该这样做.

我不能告诉你支付宝的动机,但我可以猜测:php喜欢从http请求更改输入变量的键.

例如,名称a.b [将显示为$_POST [‘a_b__’]. php将用下划线替换空格,圆点和打开括号:
来源:http://php.net/manual/en/language.variables.external.php

此外,php将解析出形成匹配的变量名称中的匹配括号到嵌套数组中.例如,arr [a] [b]将显示为$_POST [‘a’] [‘b’].
http://php.net/manual/en/faq.html.php#faq.html.arrays

此外,当括号不正确时,php表现为各种疯狂和越野车:
https://bugs.php.net/bug.php?id=48597

此外,magic_quotes_gpc用于将其爪子安装到每个php安装中,在某些情况下更改变量的名称. http://php.net/manual/en/security.magicquotes.php

此外,php具有arg_seperator.input设置,有些人喜欢将其设置为& amp; amp; amp;而不是只是&贝宝不知道你喜欢什么,显然总是使用&
http://php.net/manual/en/ini.core.php#ini.arg-separator.input

另外,尽管做错了,但在php代码/库中自动修改诸如$_POST的请求输入,例如xss“清理”它们或其他这样的交叉问题并不常见.

通过手动解析输入,您可以避免所有潜在的问题.这个决定看起来好像是很好的工程.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读