表单提交Firefox和Google Chrome中的差异(ColdFusion)

时间:2012-11-12 15:36:36

标签: firefox google-chrome coldfusion

几天前我已经制作了一个Coldfusion 9脚本,但在提交表单之后,查询将无法在Firefox中运行。一切都适用于谷歌浏览器,但不适用于Firefox。

我试过Google,但我找不到与此问题有关的任何内容。如果在阅读完之后有些事情不清楚 - 请问,我会尽力向你解释。

该脚本位于:http://pastebin.com/Bic28B3L

亲切的问候,

4 个答案:

答案 0 :(得分: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选项卡。如果它与浏览器相关,那将会有所不同。

答案 1 :(得分: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不会在表单帖子中返回图片的名称。它只返回图像映射的X和Y值。您可能需要做的是将<CFINPUT> TAG替换为HTML <INPUT type="submit">按钮,并使用CSS将图像应用于此。您甚至可以考虑检查一些其他表单变量来代替提交按钮。

答案 2 :(得分:1)

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

<cfif IsDefined('form.submit')>

<cfif CGI.REQUEST_METHOD IS "POST">

检查表单是否已提交。

答案 3 :(得分: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