几天前我已经制作了一个Coldfusion 9脚本,但在提交表单之后,查询将无法在Firefox中运行。一切都适用于谷歌浏览器,但不适用于Firefox。
我试过Google,但我找不到与此问题有关的任何内容。如果在阅读完之后有些事情不清楚 - 请问,我会尽力向你解释。
该脚本位于:http://pastebin.com/Bic28B3L
亲切的问候,
答案 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