ColdFusion7を実行しています。
session
Application.cfmは、すべての変数をループしますrequest.session
OnRequestEnd.cfmは、すべてのrequest.session
値をループバックしますsession
これを行うので、単一のトランザクションで変数を書き込むときにスコープをロックする必要があるのは1回だけです。(これはもうそれほど問題ではないと思いますか?それでも、正確にそれを取り除くことはできません)。
SEO URLへの301リダイレクトを提供するか、コンテンツを配信する「redirect.cfm」ページがあります。一部のフォームは古いURLに投稿するため、POSTデータが失われる301リダイレクトが必要です。これが私がそれを処理することを意図した方法です。
<!--- if form scope exists (posted data) copy it to the request.session scope --->
<cfif structKeyExists(form,'fieldNames')>
<cfset request.session.postData = structCopy(form)>
</cfif>
次に、301リダイレクトに移動し、redirect.cfmに戻ってコンテンツを配信すると、このコードが実行されます。
<!--- if request.session.postData exists (posted data) copy it to the form scope --->
<cfif structKeyExists(request.session,'postData')>
<cfset form = structCopy(request.session.postData)>
<cfset StructDelete(request.session,'postData')>
</cfif>
これは、データの投稿から301リダイレクトが必要ない場合に正常に機能します。
301リダイレクトを使用して、Application.cfmとOnRequestEnd.cfmの両方が2回実行されることを確認しました(最初の301で1回、コンテンツ配信で1回)。
最初のOnRequestEnd.cfm呼び出しの終わりまでにsession.postdata
、フォームデータが正しく入力されます。
301リダイレクトの後、Application.cfmに再びヒットすると、session.postdata
「struct[empty]」が返されます。
何か助けはありますか?ありがとう