0

ウェブサイトを更新した後、ウェブサイトがフォームを再度送信しないようにしています。問題は、前の側に戻って物事を変更し、もう一度電子メールを送信するときに可能であるはずです。

戻ると、フォームページは再度読み込まれず、SESSION変数を変更することはできません。ただし、ユーザーは古いデータを再度取得できるはずであり、すべてを再度入力する必要はありません。

変数の設定にSESSIONだけを使用した後、CGI.HTTP_Refererを使用して、ユーザーがアクセスしたWebサイトを取得しました。ただし、Webサイトをリロードしても、リファラーは変更されません。したがって、そのように問題を解決する方法はありません。

<cfif Right("#CGI.HTTP_REFERER#", 5) EQ "myForm">
    <cfset SESSION.send = true />
<cfelse>    
    <cfset SESSION.send = false />
</cfif>

javascriptまたはその他の方法でColdFusionコードを実行する方法はありますか


私が試したこと:

<cfif isDefined("SESSION.actualSite") EQ "false" 
AND isDefined("SESSION.actualSite") EQ "false">

        <cfset SESSION.lastSite = ArrayNew(1) />
        <cfset SESSION.actualSite = ArrayNew(1) />
        <cftrace var="SESSION.lastSite" text="lastSite1" />
        <cftrace var="SESSION.acutalSite" text="acutalSite1" />
    </cfif>

    <cfif ArrayisEmpty(SESSION.actualSite) EQ "NO">
        <cfoutput>#ArrayLen(SESSION.actualSite)#</cfoutput>
        <cfset SESSION.lastSite[1] = SESSION.actualSite[1] />
        <cfset SESSION.lastSite[2] = SESSION.actualSite[2] />

        <cfdump var="#SESSION#" label="session scope from application.cfm" /><br />

        <cfif SESSION.actualSite[1] NEQ SESSION.lastSite[1] >           
            <cfoutput>INSIDE TRUE BLOCK</cfoutput>
            <cfset SESSION.send = true />
        <cfelse>        
            <cfoutput>INSIDE FALSE BLOCK</cfoutput>
            <cfset SESSION.send = false />
        </cfif>
    </cfif> 

    <cfset SESSION.actualSite[1] = Right("#CGI.CF_TEMPLATE_PATH#", 25) />
    <cfset SESSION.actualSite[2] = Left("#Right("#CGI.HTTP_REFERER#", 25)#", 17) />

私には、出力テキストを表示するだけの空白のページに再配置する方法が最も簡単で最良の方法であるように見えます。しかし、私はこの問題を解決する別の方法を探していました。前のコードでは、CGI変数CF_TEMPLATE_PATHとHTTP_RERFERERを配列内に保存しています。次の更新時、またはフォームに戻って再度送信すると、配列が再度設定され、前のサイト情報(前のページから)が2番目の配列に移動されます。これは、Application.cfm内で実行する必要があります。また、SESSIOnスコープで配列を定義しました...すべてが正常である必要がありますが、何かが機能しません。多分誰かが私を助けることができますか?!

4

1 に答える 1

5

これは、私が働いていたいくつかのサイトで「メールの再送信を再読み込みする」状況に対処した方法です。

フォームが送信され、電子メールが送信されたら、を使用cflocationして、入力に感謝する単純なhtml/cfmファイルにリダイレクトします。ユーザーはそのページをリロードでき、「ありがとう」メッセージが再表示されます。

于 2012-07-19T21:59:00.680 に答える