FORM.payment_date是Coldfusion中的保留名称错误,导致CF9中的PayPal IPN INVALID验证

Mar*_*ner 3 coldfusion paypal paypal-ipn coldfusion-9

在ColdFusion服务器/开发环境中运行以下实验:

1)创建以下使用post方法提交给自己的基本HTML表单:

<form method="post">
    DATE: <input type="text" name="date" value="gfsgfdgfsd"><br>
    MARTIN: <input type="text" name="martin" value="beardy"><br>
    PAYMENT: <input type="text" name="payment" value="50 POUNDS"><br>
    PAYMENT_DATE: <input type="text" name="payment_date" value="06:05:13 Apr 09, 2014 PDT"><br>
    XEVI: <input type="text" name="xevi" value="cool"><br>
    <input type="submit" value="submit"><br>
</form>

<cfdump var="#FORM#" />
Run Code Online (Sandbox Code Playgroud)

现在访问该页面并点击Submit按钮.请注意,您收到错误Form entries are incomplete or invalid.现在从PAYMENT字段末尾删除'POUNDS',使值仅包含数值.重新提交表单并注意错误消失.

2)现在研究FORM结构的CF转储.注意元素PAYMENT_DATE下的逗号分隔列表中是如何丢失的FIELDNAMES!显然它存在是因为它作为转储中的倒数第二个元素可见.那为什么没有列出?

注意:这个奇怪的错误在我尝试集成PayPal IPN(即时付款通知)通知验证/验证阶段时浪费了4个小时,这需要您将所有参数发送回PayPal服务器,其参数与提交时的顺序相同给你.因为payment_date缺少的是作为INVALID返回.我修复了一个脏的黑客,它在寻找mc_gross循环遍历字段名和payment_date手动插入时.艾尔,我觉得不洁净!

实验1证明这FORM.PAYMENT是一个必须是数字的保留值.

实验2证明这FORM.PAYMENT_DATE是一个保留值,在FORM.FIELDNAMES填充时会被忽略.

为什么?

小智 8

在ColdFusion中的表单范围中,以_date结尾的任何内容都按照http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec173d0-7ffe.html进行保留,以进行验证.

我无法复制你所遇到的问题,"付款"是一个整数.只要我将payment_date字段更改为paymentdate,就会立即提交.

  • 您可以在Application.cfc文件中禁用此功能:this.serverSideFormValidation ="false"; (6认同)
  • 有关详细信息,请参阅[使用隐藏字段验证表单数据](http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7a7b.html). (2认同)