Buongiorno a tutti e Buon Fine Anno. Espongo il mio problema e premetto che non sono un'esperta di php che uso solo per i form di contatto. Parlo, infatti, di un form creato in html, php e javascript. In questo form, uso Javascript anche per preservare i campi già compilati nel caso in cui la pagina venga riaggiornata (per esempio a causa del captcha errato), in modo che non si debba ricompilare tutto quanto. Vorrei, però, che i campi venissero preservati solo quando la pagina viene riaggiornata perchè l'invio non avviene a causa di un errore e venissero invece cancellati quando l'invio avviene in modo corretto. C'è un modo per ottenere questo? Grazie mille per l'aiuto.
Questo è un esempio base del form con i due file principali:
Questo è un esempio base del form con i due file principali:
HTML:
<form class="form-contact" action="contact3.php" method="post" enctype="multipart/form-data" onsubmit="return checkEmail(this)">
<p><span class="star">*</span> <span style="font-size:0.8em">Campi obbligatori</span></p>
<p><label>Nome:<span class="star">*</span><br></label><input id="name" class="field" type="text" name="name" required /></p>
<p><label>E-mail:<span class="star">*</span><br></label><input id="email" class="field" type="email" name="email" required /></p>
<p><label>Messaggio: <span class="star">*</span><br></label><textarea id="message" class="form-text" rows="15" cols="40" name="message" required ></textarea></p>
<p style="width: 158px; border: 1px solid #cccccc; padding: 4px">Antispam: <br><img style="vertical-align: middle" id="captcha" src="./captcha.php" />
<a onclick="reload()" style="cursor: pointer; cursor: pointer; font-size: 2.0rem; vertical-align: middle; color: green; font-weight: bold;"> ↻</a><br>
<label><span style="font-size: 0.8rem">Type the numbers</span></label><br>
<input type="text" name="captcha" /></p>
<div class="button-container">
<input class="button" type="reset" value="Reset">
<input class="button" type="submit" value="Send">
</div>
</form>
</div>
<script>
function checkEmail(theForm) {
if (theForm.email.value != theForm.remail.value)
{
alert('Le email non corrispondono/The emails don\'t match!');
return false;
} else {
return true;
}
}
</script>
<script>
function reload(){
document.getElementById("captcha").src= './captcha.php?t=' + (new Date()).getTime();
}
</script>
<!-- script per campi persistenti se pagina aggiornata -->
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous">
</script>
<script>
// Run on page load
window.onload = function() {
// If sessionStorage is storing default values (ex. name), exit the function and do not restore data
if (sessionStorage.getItem('name') == "name") {
return;
}
// If values are not blank, restore them to the fields
var name = sessionStorage.getItem('name');
if (name !== null) $('#name').val(name);
var email = sessionStorage.getItem('email');
if (email !== null) $('#email').val(email);
var message= sessionStorage.getItem('message');
if (message!== null) $('#message').val(message);
}
// Before refreshing the page, save the form data to sessionStorage
window.onbeforeunload = function() {
sessionStorage.setItem("name", $('#name').val());
sessionStorage.setItem("email", $('#email').val());
sessionStorage.setItem("message", $('#message').val());
}
</script>
PHP:
<?php
session_start();
if ($_POST['captcha'] != $_SESSION['captcha']) {
header("Location: ./error");
die();
}
//impostazioni email
else {
if(isset($_POST['name'])) {
$name = $_POST['name'];
$email = $_POST['email'];
$message = ($_POST['message']);
$emailmessage = "Hai ricevuto una richiesta dal tuo modulo di contatto.
Name: $name
Email: $email
Message: $message
";
//Defining mail settings admin
$to = "mail@mail";
$subject = "Form submission sent";
$headers = "From: $email";
$confirm = "./thankyou";
if(isset($name)) {
mail($to,$subject,$emailmessage,$headers);
echo "<META HTTP-EQUIV=\"refresh\" content=\"0;URL=".$confirm."\">";
}
}
}
?>