【问题标题】:FORM.payment_date is reserved name bug in Coldfusion causing PayPal IPN INVALID verification in CF9FORM.payment_date 是 Coldfusion 中的保留名称错误,导致 CF9 中的 PayPal IPN 验证无效
【发布时间】: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_DATEFIELDNAMES 元素下的逗号分隔列表中是如何缺失的!显然它存在是因为它作为转储中的倒数第二个元素可见。那么为什么没有列出呢?

注意:这个奇怪的错误浪费了我 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


    【解决方案1】:

    在 ColdFusion 的表单范围内,任何以 _date 结尾的内容都根据http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec173d0-7ffe.html 保留用于验证目的。

    我无法复制您在“付款”为整数时遇到的问题。只要我将 payment_date 字段更改为 paymentdate,它就可以提交。

    【讨论】:

    • +1 给你,因为我正在输入一个类似的答案,但你打败了我。我打算添加其他文档参考 - help.adobe.com/en_US/ColdFusion/9.0/Developing/… {edit} 哈!现在我看到@Leigh 也击败了我发表评论。我今天一定很慢……
    • 您可以在 Application.cfc 文件中禁用此功能:this.serverSideFormValidation="false";
    • 太棒了。谢谢大家的帮助。
    • 哦,@RaymondCamden 两个月后我们在 SOTR14 见! :-)
    猜你喜欢
    • 2016-06-26
    • 2012-03-08
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 2014-09-30
    • 2013-07-17
    相关资源
    最近更新 更多