几天前,我制作了一个小的 Coldfusion 9 脚本,但不知何故,在提交表单后,查询将无法在 Firefox 中运行。在 Google Chrome 中一切正常,但在 Firefox 中却不行。
我试过谷歌它,但我找不到任何与这个问题有关的东西。如果您在阅读本文后有什么不清楚的地方 - 请询问,我会尽力向您解释得更好。
该脚本可在以下网址找到: http: //pastebin.com/Bic28B3L
亲切的问候,
几天前,我制作了一个小的 Coldfusion 9 脚本,但不知何故,在提交表单后,查询将无法在 Firefox 中运行。在 Google Chrome 中一切正常,但在 Firefox 中却不行。
我试过谷歌它,但我找不到任何与这个问题有关的东西。如果您在阅读本文后有什么不清楚的地方 - 请询问,我会尽力向您解释得更好。
该脚本可在以下网址找到: http: //pastebin.com/Bic28B3L
亲切的问候,
我的猜测是 FF 和 Chrome 正在以不同的方式处理由这一行生成的表单元素:
<cfinput type='image' src='http://linehotel.org/c_images/bot_buy.png' name='submit' value='Koop deze badge nu'>
看起来您的代码正在检查 form.submit 是否存在,所以我会查看此标签生成的源代码。
要尝试的另一件事是安装和运行Fiddler并使用它捕获 Chrome 和 FF 提交的内容并比较两者,特别是查看请求部分的 WebForms 选项卡。如果它与浏览器相关,则会有所不同。
罪魁祸首有两个:
<cfinput type='image'...>
和
<cfif IsDefined('form.submit')>
Coldfusion 将为您的 CFINPUT 生成 HTML,如下所示:
<input type="image"...
Firefox 会生成这样的表单帖子:
submit.x: mouseclick x coords.
submit.y: mouseclick y coords.
Firefox 不会在表单 post 中返回图像的名称。它只会返回图像映射的 X 和 Y 值。您可能需要做的是用<CFINPUT>
HTML<INPUT type="submit">
按钮替换 TAG 并使用 CSS 将图像应用到它。您甚至可以考虑检查其他表单变量来代替提交按钮。
您可以保留脚本原样并替换
<cfif IsDefined('form.submit')>
和
<cfif CGI.REQUEST_METHOD IS "POST">
检查表单是否已提交。
查看您的代码,您可能还想查看 cfqueryparam 标记以帮助防止 sql 注入,并且您可能希望在 cfquery 之外而不是在其中进行计算...例如:
<cfquery name = "pay" datasource = "#DSN#">
UPDATE users
SET bots=#user.bots#-1
WHERE id=#user.id#
</cfquery>
可能会更好:
<Cfset xBots=user.bots-1>
<cfquery name = "pay" datasource = "#DSN#">
UPDATE users
SET bots=<cfqueryparam cfsqltype="cf_sql_integer" value="#xBots#">
WHERE id=<cfqueryparam cfsqltype="cf_sql_integer" value="#user.id#">
</cfquery