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?

È stato utile?

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">
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top