【发布时间】:2014-05-22 20:24:44
【问题描述】:
在您的 ColdFusion 服务器/开发环境中运行以下实验:
1) 创建以下基本 HTML 表单,该表单使用 post 方法提交给自身:
<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#" />
现在访问该页面并点击Submit 按钮。请注意,您收到错误 Form entries are incomplete or invalid。现在从PAYMENT 字段的末尾删除“POUNDS”,以便该值仅包含数值。重新提交表单并注意错误消失。
2) 现在研究FORM结构的CF Dump。注意PAYMENT_DATE 在FIELDNAMES 元素下的逗号分隔列表中是如何缺失的!显然它存在是因为它作为转储中的倒数第二个元素可见。那么为什么没有列出呢?
注意:这个奇怪的错误浪费了我 4 个小时的时间,同时尝试集成 PayPal IPN(即时付款通知)通知验证/验证阶段,该阶段要求您使用与提交给您时的顺序相同。因为payment_date 丢失,所以返回为INVALID。我用一个肮脏的黑客来修复它,它在循环字段名并手动插入payment_date 时查找mc_gross。呃,我觉得不干净!
实验1证明FORM.PAYMENT是一个保留值,必须是数字。
实验 2 证明 FORM.PAYMENT_DATE 是一个保留值,在填充 FORM.FIELDNAMES 时会被忽略。
为什么?
【问题讨论】:
标签: paypal coldfusion paypal-ipn coldfusion-9