我有一个 PayPal 监听器,它从 PayPal 获取HTTP POST
请求(或者 PayPal 文档似乎表明这是他们发送的内容),监听器发回信息以供 PayPal 验证,然后如果信息得到验证,它会执行数据库事务。这是正常的 PayPal IPN 流程,验证部分工作正常。
我从 PayPal 获得的数组中的值之一POST
是我通过它来跟踪交易号的东西。所以我打了一个看起来像这样的电话:(不是实际代码;我完全了解SQL 注入)
UPDATE transactions SET status='paid' WHERE id=$_POST['invoice']
问题:如果我通过将带有一些输入的表单指向我的侦听器来伪造输入,一切正常,但如果我从 PayPal 获得一个真正的 POST 数组,则数据库不会运行。我知道$_POST['invoice']
当我获得真实的 PayPal 数据时设置了变量,我已经测试过了,它有一个有效的值,比如 84,所以我不知道为什么我的交易没有执行。事务上方和下方的行都执行。
也许我将不得不发布我的实际代码,但是是否有可能以某种方式配置 PHP,使其在收到来自 PayPal 的请求时不会运行交易?就像我说的,我认为 PayPal 正在发送一个HTTP POST
请求,所以它应该与我的假表格无法区分,但有些地方出了问题。