Der Bereich Formular hat eine FieldNames
die Ihnen mitteilt, welche Felder übermittelt wurden.
Sie können auch Folgendes tun StructKeyList(Form)
um eine Liste der aktuellen Variablen im Bereich zu erhalten. Diese enthält auch FieldNames und alle anderen Variablen, die seither zum Bereich "Form" hinzugefügt wurden.
Beide können innerhalb einer <cfloop index="CurField" list="#StructKeyList(Form)#">
- aber es gibt einfachere Wege...
Wenn Sie mit CF8 arbeiten, können Sie den Bereich ganz einfach in einen String umwandeln mit serializeJson()
y deserializeJson()
Funktionen, die dann in einem geeigneten Datenbankfeld gespeichert werden können.
Wenn Sie mit CF6..7 arbeiten, können Sie eine CFC namens cfjson von riaforge das diese Funktionen nachahmt.
Schließlich, wenn Sie auf früheren Versionen von CF, oder haben eine seltsame Abneigung gegen die Verwendung von JSON für die Speicherung, können Sie Ihre eigenen mit einem noch einfacher Schleife, um die oben angedeutet - eine Sammlung Schleife können Sie direkt durch eine Struktur oder Scope - beachten Sie, dass einige ärgerlich Person gewählt "Element" statt "Index" als Attribut für diese.
Da wir wissen, dass die Formularvariablen alle einfache Objekte (d.h. Strings) sind, habe ich mich für eine einfache key=value[newline]key=value[newline]...
Format, das auch leicht umkehrbar ist.
Kodierung:
<cfset Output = '' />
<cfloop item="CurField" collection="#Form#">
<cfset Output = Output & CurField & '=' & Form[CurField] & Chr(10) />
</cfloop>
<cfoutput>#Output#</cfoutput>
Entschlüsselung:
<cfset FormData = StructNew()/>
<cfloop index="CurLine" list="#Output#" delimiters="#Chr(10)#">
<cfset FormData[ListFirst(CurLine,'=')] = ListRest(CurLine,'=') />
</cfloop>
<cfdump var="#FormData#"/>
Ein letzter wichtiger Hinweis: Wie bei allen vom Benutzer bereitgestellten Variablen (Form,Url,Cookie scopes) müssen Sie sicherstellen, dass Sie diese korrekt behandeln, um Sicherheitslücken zu vermeiden - insbesondere stellen Sie sicher, dass Sie cfqueryparam verwenden für todo Ihre Datenbankabfragen - Ich möchte nicht zu weit abschweifen, aber Sie können gerne eine weitere Frage stellen, wenn Sie Hilfe zu cfqueryparam benötigen.
Ich hoffe, das hilft. :)