- Home
- Categorie
- Coding e Sistemistica
- PHP
- Rimuovere "dati in memoria" dopo invio mail
-
Rimuovere "dati in memoria" dopo invio mail
Ciao a tutti.
Ho preparato un form e faccio l'invio della mail tramite php. Fino a qui nulla di strano.
Ho notato però che ogni volta che ricarico la pagina la mail viene inviata nuovamente, come se i dati inseriti nel form rimanessero in memoria.
Come faccio a risolvere questo problema? Qualcuno potrebbe aiutarmi per favore? Grazie.
-
Ciao,
Potresti darci un esempio del code per favore? L'ipotesi piu' probabile e' che tu stia utilizzando la stessa pagina per compilare il form ed inviare l'email, e che i dati siano cached dal browser.
-
Ciao e grazie per avermi risposto. la tua diagnosi mi sembra esatta!L'unica cosa che ho notato è che se cancello la cache del browser il problema rimane. Ti posto il mio codice.
[PHP]
<?php
if(isset($_POST['submit'])){$name = !empty($_POST['name'])?$_POST['name']:'';
$email = !empty($_POST['email'])?$_POST['email']:'';
$city = !empty($_POST['city'])?$_POST['city']:'';
$nationality = !empty($_POST['nationality'])?$_POST['nationality']:'';
$location = !empty($_POST['location'])?$_POST['location']:'';
$pax = !empty($_POST['pax'])?$_POST['pax']:'';
$message = !empty($_POST['message'])?$_POST['message']:'';
$checkbox = !empty($_POST['checkbox'])?$_POST['checkbox']:'no';// corpo della mail
$to = '[email protected]'; // <--- inserire e-mail destinatario
$subject = "Ti ha scritto dal tuo sito: $name";
$htmlContent = "
<ul style='list-style: none; padding-left: 0;'>
<li style='margin: 0 0 15px 0;'>Questi sono i dettagli del messaggio:</li>
<li style='margin: 0 0 5px 0;'><b>Nome:</b> ".$name."</li>
<li style='margin: 0 0 5px 0;'><b>E-mail:</b> ".$email."</li>
<li style='margin: 0 0 5px 0;'><b>Città:</b> ".$city."</li>
<li style='margin: 0 0 5px 0;'><b>Nazionalità:</b> ".$nationality."</li>
<li style='margin: 0 0 5px 0;'><b>Luogo in Italia:</b> ".$location."</li>
<li style='margin: 0 0 5px 0;'><b>Persone:</b> ".$pax."</li>
<li style='margin: 0 0 5px 0;'><b>Messaggio:</b> ".$message."</li>
<li style='margin: 0 0 5px 0;'><b>Accettazione Privacy:</b> ".$checkbox."</li>
</ul>
";// impostare sempre content-type quando si invia una mail in HTML
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";// headers
$headers .= 'From:'.$name.' <'.$email.'>' . "\r\n";// invio mail
@mail($to,$subject,$htmlContent,$headers);$succMsg = '<script>
UIkit.notify({
message : "Message sent!",
status : "success",
timeout : 0,
pos : "top-center"
});
</script>';$name = '';
$email = '';
$city = '';
$nationality = '';
$location = '';
$pax = '';
$message = '';
$checkbox = '';
}else {
$errMsg = '<script>
UIkit.notify({
message : "Message not sent!",
status : "danger",
timeout : 0,
pos : "top-center"
});
</script>';
}?>
<?php if(!empty($errMsg)): ?><div class="errMsg"><?php echo $errMsg; ?></div><?php endif; ?>
<?php if(!empty($succMsg)): ?><div class="succMsg"><?php echo $succMsg; ?></div><?php endif; ?>
[/PHP]Grazie per l'aiuto che mi stai dando.
-
Ciao,
if(isset($_POST['submit'])){
Quando ricarichi la pagina, di fatto re-invii una richiesta identica. Quindi, re-invii una richiesta di tipo POST che viene catturata in $_POST, eseguendo quindi lo script php.
La soluzione piu' semplice e' di re-indirizzare l'utente verso un'altra pagina.
Ps: Io leverai licenseKey e applicationId dal post.
-
Ti ringrazio per l'avvertimento. La licenseKey e applicationId non è roba mia. Me li ha inseriti in automatico il forum. Ho eliminato la parte HTML altrimenti non me li toglieva.
Tornando a noi. Dovrei creare una pagina apposita solo per scriverci: "complimenti hai inviato il tuo messaggio!". E' una cosa che non amo fare particolarmente.
Soluzioni migliori non ce ne sono? Lo script originale faceva anche la verifica del re-captcha di google e non mi faceva "questo verso".