0

数日前、私は小さな Coldfusion 9 スクリプトを作成しましたが、どういうわけか、フォームを送信した後、クエリが Firefox で実行されません。Google Chrome ではすべて正常に機能しますが、Firefox では機能しません。

Google で検索してみましたが、この問題に関連するものは見つかりません。これを読んだ後で何か不明な点があれば、質問してください。よりよく説明できるように努めます。

スクリプトは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 が存在することをチェックしているように見えるので、このタグが生成するソースを調べます。

もう 1 つの試みは、 Fiddlerをインストールして実行し、それを使用して Chrome と FF によって行われた送信をキャプチャし、2 つを比較することです。特に、リクエスト セクションの [WebForms] タブを見てください。ブラウザ関連の場合は違いがあります。

于 2012-11-12T15:50:29.693 に答える
1

スクリプトをそのままにして、置き換えることができます

<cfif IsDefined('form.submit')>

<cfif CGI.REQUEST_METHOD IS "POST">

フォームが送信されたかどうかを確認します。

于 2012-11-12T16:02:28.997 に答える
1

犯人は次の 2 点です。

<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 を使用して画像を適用する必要があります。送信ボタンの代わりに、他のフォーム変数をチェックすることを検討することもできます。

于 2012-11-12T15:54:31.857 に答える
1

コードを見ると、sql インジェクションから保護するために cfqueryparam タグも確認できます。また、計算を cfquery 内ではなく 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 に答える