Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann der Wert des Backend-Bestätigungscodes mit dem Frontend abgeglichen werden?
Der Front-End-Benutzer gibt bei der Registrierung den Wert des Bestätigungscode-Bildes ein und gleicht ihn dann mit dem Back-End ab.
Da sich der Benutzer jedoch nicht registriert hat, kann ich ihm keine Identität zuordnen, daher ist mein vorläufiger Entwurf wie folgt:
Speichern Sie beim Generieren eines Bestätigungscode-Bildes den Wert des Bestätigungscodes im Cache (Redis). Wenn das Front-End den Bestätigungscode übermittelt, liest es den Wert aus dem Cache Sehen Sie nach, ob es einen gibt. Wenn ja, ist die Übereinstimmung erfolgreich und löschen Sie diesen Cache.
Das Problem besteht darin, dass es auch bei einem Fehler zu einem erfolgreichen Match kommen kann, die Wahrscheinlichkeit jedoch nicht besonders hoch ist.
Gibt es eine bessere Idee?
Der Front-End-Benutzer gibt bei der Registrierung den Wert des Bestätigungscode-Bildes ein und gleicht ihn dann mit dem Back-End ab.
Da sich der Benutzer jedoch nicht registriert hat, kann ich ihm keine Identität zuordnen, daher ist mein vorläufiger Entwurf wie folgt:
Speichern Sie beim Generieren eines Bestätigungscode-Bildes den Wert des Bestätigungscodes im Cache (Redis). Wenn das Front-End den Bestätigungscode übermittelt, liest es den Wert aus dem Cache Sehen Sie nach, ob es einen gibt. Wenn ja, ist die Übereinstimmung erfolgreich und löschen Sie diesen Cache.
Das Problem besteht darin, dass es auch bei einem Fehler zu einem erfolgreichen Match kommen kann, die Wahrscheinlichkeit jedoch nicht besonders hoch ist.
Gibt es eine bessere Idee?
Wenn Front-End und Back-End nicht getrennt sind, kann der Verifizierungscode zur Verifizierung in der Sitzung gespeichert werden.
Wenn das Front-End und das Back-End getrennt sind, ist jede Anfrage des Front-Ends zustandslos. Dann muss dem Front-End ein Token zugewiesen werden, wenn das Front-End sie zum ersten Mal anfordert . Dann wird jedes Mal, wenn das Front-End eine Anfrage stellt, dieses Token mitgebracht. Sie können dieses Token als Schlüsselwert von Redis verwenden und den Bestätigungscode an der entsprechenden Wertposition platzieren.
Eine Sitzung und ein Bestätigungscode, auch wenn Sie sich nicht registrieren, gibt es eine Sitzung
Solange Sie es gut kontrollieren, sollte es keine Chance auf einen erfolgreichen Abgleich geben, selbst wenn Sie eine falsche Eingabe machen.
1. Generieren Sie den Bestätigungscode im Hintergrund. Und füge es in die Sitzung ein.
2. Der von der Rezeption erhaltene Bestätigungscode wird auch mit dem gerade in der Sitzung eingegebenen Code synchronisiert.
3. Wenn die Rezeption den falschen Bestätigungscode eingibt oder der Benutzer klickt, um den Bestätigungscode zu ändern. Ändern Sie dann den Bestätigungscode im Hintergrund und auch den in der Sitzung
Tatsächlich gibt es kein Problem, solange der an der Rezeption angezeigte Bestätigungscode immer mit der Sitzung synchronisiert ist.
PS: Wenn jede Anfrage mehrere Threads hat, sollte es keine Chance auf einen erfolgreichen Abgleich geben, selbst wenn ein Eingabefehler gemacht wird.
Wenn ein Benutzer bei der Registrierung einen Bestätigungscode generiert, wird der Bestätigungscode in die Sitzung geschrieben. Nachdem der Benutzer ihn übermittelt hat, wird der Bestätigungscode aus der Sitzung gelesen und verglichen.
Bitte lesen Sie diesen Artikel http://. /netsecurity.51cto. com/art/201402/428721.htm
Frontend:<img src="checkcode.php" id="code" onclick="JavaScript:this.src='checkcode.php?tm=' Math.random()" />
Backend:
<code>$showing=strtoupper($_POST['checkcode']); //检测提交过来的验证码 if($_SESSION['checkcode']!=$showing||empty($showing)){ unset($_SESSION['checkcode']); die('验证码错误'); } </code>
Bestätigungscode-Generierung:
Sitzung: Bei Computern, insbesondere bei Netzwerkanwendungen, spricht man von „Sitzungssteuerung“. Unabhängig davon, ob Sie ein registrierter Benutzer sind oder nicht, generiert der Server für die Dauer Ihres Zugriffs eine eindeutige Sitzungs-ID. Speichern Sie einfach die Daten des Bestätigungscodes in der Sitzung.