Codeigniter redirect vs. laden, anzeigen
Ich früher immer schreiben $this->load->view()
zum laden einer Ansicht. Ich bemerkte, dass es ein problem mit, vor allem, wenn es um die Wiedervorlage und die URL in der Adresszeile. Statt dessen begann ich mit redirect('controller/function','refresh')
, das gleiche zu erreichen. Meine Frage ist: Ist das eine in Ordnung Ansatz oder ist es verpönt? Ich glaube mein code ist viel glatter, aber ich würde sicherlich gerne wissen, ob dieses hatten irgendwelche Nebenwirkungen später.
z.B. use-case:
$id = $this->user_model->buildAccount($name, $email);
if(isset($id) && $id != '') {
$this->session->set_userdata('id', $id);
redirect('users/details');
} else {
redirect('members/');
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn es um
CI
jeder Ansatz, den Sie nehmen ist okay, imho, dein Ansatz ist auch gut so. In deinem code oben, wo leiten Sie den user nach dem erstellen der Sitzung, sollten Sie auch prüfen, die Gültigkeit der Sitzung in Ihremuser/details
Funktion. Anyways, Sie zu rufenload->view()
laden, anzeigen, werden Sie in jeder Funktion. Also, nicht Fragen, wo Sie laden Ihre Ansicht.Müssen Sie mit PRG - Post/Redirect/Get pattern.
Umleitung und Belastung anzeigen, sind nicht die gleichen, wenn Sie die form in den Inhalt der Seite.
Es ist ein Blick, view_1 mit der form in der es zu Lastschrift Geld von einem Konto. Nach Absenden des Formulars in der view_1 zu dem Sie springen möchten view_2 mit einer Erfolgsmeldung und Sie haben 2 Möglichkeiten, um das gleiche zu erreichen. 1. laden view_2 mit Erfolg-Nachricht oder 2. Umleitung zu view_2 mit flash-Daten tragen Erfolgsmeldung.
Option 1: laden view_2 mit Erfolgsmeldung
Wenn Sie das Formular abschicken und aktualisieren, es wird dazu führen, Wiedervorlage und dazu führen, dass mehrere Bankeinzug von dem Konto, das sollte nicht der Fall sein. Sie können auch sehen, die Warnung knallen od "Bestätigung der form Wiedervorlage".
Option 2: Das ist die richtige Antwort
PRG
PRG - Post/Redirect/Get
PRG ist ein web-Entwicklung-design pattern, die verhindert, dass einige doppelte-Formular, das bedeutet, Senden Sie das Formular (view_1) -> Redirect -> Get (view_2)
Einer HTTP-Antwort mit dieser status-code wird zusätzlich geben Sie eine URL im location-header-Feld. Der user agent (z.B. web-browser) ist eingeladen, eine Antwort mit diesem code zu machen, eine zweite, ansonsten identische Anfrage an die neue URL angegeben, im Feld Speicherort.
HTTP 1.0 mit HTTP 302 oder HTTP 1.1 HTTP-303 ("See other") response-code, um sicherzustellen, dass in dieser situation, den web-browser des Benutzers kann sicher, aktualisieren Sie die server-Antwort, ohne dass die ursprüngliche HTTP-POST-Anfrage erneut übermittelt werden.
Quelle