PayPal PHP IPN示例是什么POST序列化问题?
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将用下划线替换空格,圆点和打开括号: 此外,php将解析出形成匹配的变量名称中的匹配括号到嵌套数组中.例如,arr [a] [b]将显示为$_POST [‘a’] [‘b’]. 此外,当括号不正确时,php表现为各种疯狂和越野车: 此外,magic_quotes_gpc用于将其爪子安装到每个php安装中,在某些情况下更改变量的名称. http://php.net/manual/en/security.magicquotes.php 此外,php具有arg_seperator.input设置,有些人喜欢将其设置为& amp; amp; amp;而不是只是&贝宝不知道你喜欢什么,显然总是使用& 另外,尽管做错了,但在php代码/库中自动修改诸如$_POST的请求输入,例如xss“清理”它们或其他这样的交叉问题并不常见. 通过手动解析输入,您可以避免所有潜在的问题.这个决定看起来好像是很好的工程. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |