In diesem Artikel wird eine einfache Methode in ASP-Anwendungen vorgestellt, um zu verhindern, dass Benutzer während der aktuellen Sitzung mehrmals dasselbe Formular senden. Es besteht hauptsächlich aus vier Unterprogrammen, Sie müssen diese Codes nur in die enthaltenen Dateien einfügen und für komplexere Umgebungen direkt darauf verweisen. Wir geben am Ende des Artikels einige Verbesserungsvorschläge.
1. Grundlegender Arbeitsprozess
Im Folgenden besprechen wir diese vier Unterprogramme der Reihe nach.
(1) Initialisierung
Hier müssen wir zwei Variablen im Session-Objekt speichern, darunter:
⑴ Jede Form entspricht einer eindeutigen Kennung namens FID, und ein Zähler wird verwendet, um den Wert eindeutig zu machen.
⑵ Immer wenn ein Formular erfolgreich übermittelt wird, muss seine FID in einem Dictionary-Objekt gespeichert werden.
Wir verwenden einen speziellen Prozess, um die oben genannten Daten zu initialisieren. Obwohl es in Zukunft von jedem Unterprogramm aufgerufen wird, wird es tatsächlich nur einmal pro Sitzung ausgeführt:
SubInitializeFID()
Wenn nicht IsObject(Session(FIDList)) Dann
Setze Session(FIDList)=Server.CreateObject(Scripting.Dictionary)
Sitzung(FID)=0
Ende wenn
Sub beenden
(2) Generieren Sie eine eindeutige Kennung für das Formular
Die folgende Funktion GenerateFID() wird verwendet, um eine eindeutige Kennung für das Formular zu generieren. Die Funktion erhöht zunächst den FID-Wert um 1 und gibt ihn dann zurück:
FunctionGenerateFID()
FID initialisieren
Sitzung(FID) = Sitzung(FID) + 1
GenerateFID = Sitzung(FID)
Funktion beenden
(3) Anmeldeformular eingereicht
Wenn das Formular erfolgreich übermittelt wurde, wird seine eindeutige Kennung im Dictionary-Objekt registriert:
SubRegisterFID()
StrFID dimmen
FID initialisieren
strFID = Anfrage(FID)
Session(FIDlist).StrFID hinzufügen, now()
Sub beenden
(4) Überprüfen Sie, ob das Formular wiederholt eingereicht wird
Bevor Sie das vom Benutzer übermittelte Formular offiziell verarbeiten, sollten Sie prüfen, ob dessen FID im Dictionary-Objekt registriert wurde. Die folgende CheckFID()-Funktion wird verwendet, um diese Arbeit abzuschließen. Wenn sie registriert wurde, gibt sie FALSE zurück, andernfalls gibt sie TRUE zurück:
Funktion CheckFID()
StrFID dimmen
FID initialisieren
strFID = Anfrage(FID)
CheckFID = nicht Session(FIDlist).Exists(strFID)
Funktion beenden
2. Anwendung
Es gibt zwei Stellen, an denen die obige Funktion verwendet wird, nämlich beim Generieren des Formulars und beim Verarbeiten der Ergebnisse. Gehen Sie davon aus, dass die oben genannten vier Unterroutinen in der enthaltenen Datei Forms.inc platziert wurden. Der folgende Code bestimmt, ob ein Formular generiert oder die Formularergebnisse basierend auf dem FID-Wert verarbeitet werden sollen. Der darin beschriebene Verarbeitungsprozess ist für die meisten ASP-Anwendungen geeignet:
<%Option Explicit%>
< !--#include file=forms.inc-->
<HTML>
<KOPF>
<TITLE>Formulareinreichungstest</TITLE>
</KOPF
<KÖRPER>
< %
Wenn Anfrage(FID) = Dann
GenerateForm
Anders
ProzessForm
Ende wenn
%>
</KÖRPER>
</HTML>
GenerateForm ist für die Generierung des Formulars verantwortlich, das eine versteckte FID enthalten sollte, wie zum Beispiel:
< %
SubGenerateForm()
%>
< form action=< %=Request.ServerVariables(PATH_INFO)%> method=GET>
< Eingabetyp=versteckter Name=FID-Wert=< %=GenerateFID()%>>
<Eingabetyp=Textname=Parameter1-Wert=>
<Eingabetyp=Wert senden=OK>
</form>
< %
Sub beenden
%>
ProcessForm ist für die Verarbeitung des über das Formular übermittelten Inhalts verantwortlich. Vor der Verarbeitung sollten Sie jedoch CheckFID () aufrufen, um zu überprüfen, ob das aktuelle Formular übermittelt wurde. Der Code lautet wie folgt:
< %
SubProcessForm()
Wenn CheckFID(), dann
Response.Write Was Sie eingegeben haben, ist & Request.QueryString(param1)
RegistrierenFID
Anders
Response.Write Dieses Formular kann nur einmal abgesendet werden!
Ende wenn
Sub beenden
%>
3. Einschränkungen und Verbesserungsmaßnahmen
Oben haben wir eine Möglichkeit eingeführt, um zu verhindern, dass dasselbe Formular während der aktuellen Sitzung mehrmals gesendet wird. In der praktischen Anwendung müssen möglicherweise in vielen Aspekten Verbesserungen vorgenommen werden, wie zum Beispiel:
⑴ Überprüfen Sie die Rechtmäßigkeit der vom Benutzer eingegebenen Daten, bevor Sie die Formular-ID registrieren. Wenn die Daten illegal sind, kann der Benutzer auf die Schaltfläche „Zurück“ klicken, um zurückzukehren und das gleiche Formular nach der Korrektur erneut abzusenden.
⑵ Diese Einschränkung der Formularübermittlung gilt höchstens für die Dauer der aktuellen Sitzung. Wenn diese Einschränkung für mehrere Sitzungen erforderlich ist, werden Cookeis oder eine Datenbank zum Speichern relevanter Daten verwendet.
⑶ Diese Methode ist unsicher. Es dient lediglich der Verhinderung von Missbrauch und hindert erfahrene Benutzer nicht daran, das gleiche Formular absichtlich mehrmals abzusenden.