2016-06-30 8 views
0

Ich habe über den PRG-Ansatz für HTML-Formulare gewusst, ein Modell, das darauf ausgerichtet ist, Probleme bei der erneuten Übermittlung zu vermeiden. Ich kann die Vorteile beim Kauf eines Produkts in einem E-Commerce verstehen. Selbst wenn Sie den Zurück - Knopf drücken oder F5 (Aktualisieren) drücken, werden Sie immer auf die letzte Seite weitergeleitet, auf der Sie sagen können, ob der Kauf korrekt war und Sie werden nie die Original-POST-Seite, so vermeiden Sie den Kauf zweimal der gleichen Artikel (abgesehen von zusätzlichen Gegenmaßnahmen des Servers, um dies zu vermeiden).PRG (POST/Redirect/GET) -Modell für Formulare und Registrierungsformulare

Aber ich kann das Konzept für ein Registrierungsformular nicht erfassen. In einer Form dieses Typs ist es sehr häufig, dass Sie ein Feld verpassen oder falsche Daten eingeben (z. B. nicht passendes Passwort und wiederholtes Passwort). Da Ihnen die Meldung mit allen möglichen Fehlern angezeigt werden muss (serverseitig), würde ich davon ausgehen, dass Sie auf derselben POST-Seite bleiben und PRG in diesem Fall nicht zutrifft. Denn wenn es gelten würde, um die vom Benutzer eingegebenen Originaldaten wieder aufzufüllen, müssen Sie POST-Redirect-GET verwenden, mit dem endgültigen GET mit allen ursprünglich übermittelten Daten, und dann, warum nicht mit einem GET-Formular von beginnen Anfang? Habe ich Recht oder fehle ich etwas?

Zusammenfassend, PRG für One-Click-Daten (Kauf von Artikel), üblichen Ansatz für Registrierungsformulare, Kontaktformulare und dergleichen?

Antwort

0

Verwenden Anfrage GET zum Anzeigen von Daten, und lassen Sie die POST-Zustandsänderungsvorgänge Handling (Anmeldeinformationen ändern, laden Sie eine Datei usw.)

GET-Methode, sollten Sie nicht die Bedeutung hat, eine Aktion andere als Einnahme Retrieval (RFC 2616, Wikipedia)

ist es mit einem einfachen pHP Beispiel Lassen Sie erklären, haben Sie drei Dateien:

  • loginForm.php (mit dem Anmeldeformular)
  • loginAction.php (mit den Validierungsfunktionen)
  • welcome.php, dass die Begrüßungsmeldung anzeigt, ob die Registrierung

loginForm.php

erfolgreich ist
<form method="post" action="loginAction.php"> 
    <input ...> 

loginAction.php

<? if(dataValidate($_POST)){ 
     header('Location: welcome.php'); 
    }else{ 
     $_SESSION[error] = "Data not vaild"; 
     header('Location: loginForm.php'); 
    } 
    die(); 

Wenn loginAction.php die POST-Daten empfängt, wird überprüft, wohin der Benutzer umgeleitet werden soll. Wenn Fehler auftreten, können Sie eine SESSION-Variable speichern und in der loginForm.php anzeigen.


Lasst uns ein bisschen die Dinge komplizieren: viele Anwendungen POST-Daten auf der gleichen Seite, so loginForm.php und loginAction.php Logik in der gleichen Datei sind.

In diesem Fall sollten Sie den Benutzer nur bei gültiger Registrierung

Die PRG Muster nicht Sie benötigen, um eine Umleitung für alle Beiträge durchführen, nur für einen POST, die den Zustand umleiten definitiv geändert hat der Daten. (Source).