Form スコープには、FieldNames
送信されたフィールドを示す変数があります。
StructKeyList(Form)
スコープ内の現在の変数のリストを取得することもできます。これには、その後 Form スコープに追加された FieldNames およびその他の変数も含まれます。
これらのいずれも a 内で使用できます<cfloop index="CurField" list="#StructKeyList(Form)#">
が、もっと簡単な方法があります...
CF8 を使用している場合は、関数を使用してスコープを簡単に文字列に変換serializeJson()
しdeserializeJson()
、適切なデータベース フィールドに格納することができます。
CF6..7 を使用している場合は、これらの機能を模倣するriaforgeからcfjsonと呼ばれる CFC をダウンロードできます。
最後に、以前のバージョンの CF を使用している場合、またはストレージに JSON を使用することに奇妙な嫌悪感を抱いている場合は、上記のヒントにあるさらに単純なループを使用して独自のループを作成できます。コレクション ループを使用すると、構造体または構造体を直接ループできます。スコープ - これらの属性として「インデックス」ではなく「アイテム」を選んだ迷惑な人がいることに注意してください。
フォーム変数はすべて単純なオブジェクト (つまり文字列) であることを知ってkey=value[newline]key=value[newline]...
いるので、元に戻すのも簡単な基本的な形式を選択しました。
エンコーディング:
<cfset Output = '' />
<cfloop item="CurField" collection="#Form#">
<cfset Output = Output & CurField & '=' & Form[CurField] & Chr(10) />
</cfloop>
<cfoutput>#Output#</cfoutput>
デコード:
<cfset FormData = StructNew()/>
<cfloop index="CurLine" list="#Output#" delimiters="#Chr(10)#">
<cfset FormData[ListFirst(CurLine,'=')] = ListRest(CurLine,'=') />
</cfloop>
<cfdump var="#FormData#"/>
最後の重要な注意事項: すべてのユーザー指定の変数 (Form、Url、Cookie スコープ) と同様に、セキュリティ ホールを防ぐためにそれらを正しく処理する必要があります。具体的には、すべてのデータベース クエリに cfqueryparam を使用していることを確認して ください。脱線しすぎましたが、cfqueryparam について何か助けが必要な場合は、遠慮なく別の質問をしてください。
お役に立てれば。:)