0

几天前,我制作了一个小的 Coldfusion 9 脚本,但不知何故,在提交表单后,查询将无法在 Firefox 中运行。在 Google Chrome 中一切正常,但在 Firefox 中却不行。

我试过谷歌它,但我找不到任何与这个问题有关的东西。如果您在阅读本文后有什么不清楚的地方 - 请询问,我会尽力向您解释得更好。

该脚本可在以下网址找到: http: //pastebin.com/Bic28B3L

亲切的问候,

4

4 回答 4

1

我的猜测是 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 选项卡。如果它与浏览器相关,则会有所不同。

于 2012-11-12T15:50:29.693 回答
1

罪魁祸首有两个:

<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 将图像应用到它。您甚至可以考虑检查其他表单变量来代替提交按钮。

于 2012-11-12T15:54:31.857 回答
1

您可以保留脚本原样并替换

<cfif IsDefined('form.submit')>

<cfif CGI.REQUEST_METHOD IS "POST">

检查表单是否已提交。

于 2012-11-12T16:02:28.997 回答
1

查看您的代码,您可能还想查看 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
于 2012-11-12T20:07:29.903 回答