Convalida e reindirizzamento multiforma PHP
-
09-06-2019 - |
Domanda
Io ho buy.php
con un modulo dove entri articoli, quantità, dati di spedizione, ecc.
Quando fai clic su Pulsante Invia, rimanda a buy.php
($_SERVER['PHP_SELF'])
e fa qualche convalida dei dati.
Se ci sono campi mancanti o errori, vengono evidenziati.Se tutto è corretto, salvo il file $_POST
dati in $_SESSION
variabili, quindi eseguire a header('Location: check.php')
, dove visualizzo i dati in modo che l'acquirente possa controllare le informazioni un'ultima volta prima di acquistare effettivamente.
Ora, se sono dentro check.php
e premi il pulsante Indietro per buy.php
così posso cambiare le cose, il browser mi chiede se voglio inviare nuovamente i dati POST.Sto cercando di evitarlo.
Qualcuno ha qualche buon consiglio o buone pratiche per la convalida di PHP Multiform?
Inoltre, se avessi n pagine da riempire per l'utente, buy.php, buy2.php, ... buyn.php
prima di check.php le stesse idee sarebbero ancora valide?
Soluzione
Potresti eseguire un reindirizzamento a buy.php dopo aver salvato nell'oggetto sessione, che quindi esegue un reindirizzamento del server a check.php, significherebbe che quando l'utente fa clic indietro, tornerà alla richiesta GET e non alla richiesta POST
Altri suggerimenti
Sì, sono d'accordo con quanto sopra.Faccio SEMPRE a redir
lontano dall'ultimo post, quindi fare clic indietro li riporta indietro senza quell'errore O nuovi invii.evita anche complicazioni.puoi sempre taggare il redir
pagina di collegamento con a ?m
O &m
(cioè.: page.php?m
) e avere questo in cima alla pagina:(utilizzo elseif
lì dopo)
if (isset($_GET['m'])) {
echo 'order placed.';
}
else {
//...
}
Puoi anche avere tutto su una pagina.Basta nominare i pulsanti di invio submit1
, submit2
, Piace:(tieni presente che se usi un'immagine per gli invii, diventa $_POST['submit1_x']
:)
if (isset($_POST[submit1]) {
//validate + save session data from form1
//display form 2
} else if(isset($_POST[submit2])) {
//validate + save session data from form2
//display form 3
} else {
//display first form
//<input type="submit" name="submit1" value="Continue">
}