mar15

Prevenire l’invio multiplo dello stesso form


Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in /var/www/web2/html/mondoinformatico.info/nuovo/wp-content/plugins/paginated-comments/paginated-comments.php(475) : eval()'d code on line 50

Per prevenire l’invio multiplo dello stesso form c’è una tecnica abbastanza semplice che non richiede neanche l’uso di JavaScript.

Nella pagina del form, che chiameremo form_page.php, inseriamo il seguente codice:

<?
session_start();
$secret=md5(uniqid(rand(), true));
$_SESSION['FORM_SECRET']=$secret;
?>

Quindi inseriamo nel form il seguente campo hidden:

<html>
<input type="hidden" name="form_secret" id="form_secret" value="<?php echo $_SESSION['FORM_SECRET'];?>" />
</html>

In pratica viene creato un ID unico per il form, che ci basterà solo controllare nella pagina seguente:

<?
//Retrieve the value of the hidden field
$form_secret=$_POST['form_secret'];
if(isset($_SESSION['FORM_SECRET'])) {
if(strcasecmp($form_secret,$_SESSION['FORM_SECRET'])===0) {
/*Inserire il codice da eseguire qui, poi viene cancellata la variabile di sessione, in modo che il form non sia più eseguibile di nuovo.
*/
unset($_SESSION['FORM_SECRET']);
}else {
//Chiave segreta non valida!
}
}else {
//La chiave manca
echo 'Form data has already been processed!';
}
?>

Già dai commenti si può  il funzionamento del codice.

In pratica una volta effettuato il processo di invio del form, unsetta la variabile di sessione, in modo che ad invii successivi venga eseguto altro codice, che in questo caso informa che il form è stato già inviato.

Non ci sono commenti

Non ci sono commenti per questo articolo

Lascia un commento

Registrati a Mondo Informatico lasciare commenti, ascrivere articoli e guadagnare da subito con il paid to write con un unico nickname e avatar. Inoltre potrai segnalare notizie, scrivere articoli e mantenere lo storico nella tua pagina personale.

Se sei già registrato effettua il Login

Ricorda i miei dati per la prossima volta
Inviami una e-mail quando ci sono altri commenti