Invio web form da modulo in php con controllo campi by pikadilly
Dopo
gestione di un form per l'invio mail un altro script/tutorial per la gestione di un form per l'invio di mail con un controllo
Anche questo come il precedente è a cure di
Pikadilly.
"Abbiamo visto come creare una piccola form per i contatti in
xhtml e php che restituisce un errore se i campi
"body", ovvero corpo del messaggio, e "mail", ovvero l'e-mail, non sono compilati. Ma questo metodo prevede l'impiego di due pagine distinte:quella della form, che chiamai "modulo.html", e quella in php che processa i dati inseritinella form, chiamata "invio.php".
Se volessimo utilizzare invece un unica pagina che fa tutto, modulo, controllo e invio?
Ebbene si dovrà prima di tutto creare una pagina con estensione php, quindi la pagina "modulo.html" per questi fini è inutilizzabile, in seguito si dovranno apportare delle modifiche alla pagina in cui
abbiamo creato la form.
1.Questo è il codice che va inserito prima della form e serve a definire le frasi di errore e ad inviare la mail.
Codice PHP:
<?php
define("_destinatario","nome@dominio.it");
define("errore_oggetto_predefinito","Non ha inserito un oggetto!");
define("errore_email_predefinito","L'indirizzo email che ha inserito non è corretto!");
define("errore_messaggio_predefinito","Il messaggio è vuoto!");
define("segnaposto_oggetto","Inserisca un oggetto");
define("segnaposto_email","Inserisca la Sua email");
define("segnaposto_messaggio","Inserisca il Suo messaggio");
function generaModulo($oggetto=segnaposto_oggetto,$email=segnaposto_email,$messaggio=segnaposto_messaggio,$errore_oggetto="",$errore_email="",$errore_messaggio=""){
?>
[left]2. Di seguito invece c'è la form con i vari controlli in php, come si vede ho integrato benissimo
il codice xhtml della struttura della form con i vari codici php.[/left]
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" id="form1">
<p>Per ricevere informazioni e preventivi potete compliare la form sottostante. Invieremo al più presto una risposta.</p>
<table>
<tr>
<td>Il Suo indirizzo e-mail*</td>
<td><label>
<?php if (!$errore_email=="") { echo"<span><strong>$errore_email</strong></span>";} else { echo"";}?><br />
<input name="email" type="text" id="mail" value="<?php echo $email;?>" />
</label></td>
</tr>
<tr>
<td>Oggetto*</td>
<td><label>
<?php if (!$errore_oggetto=="") { echo"<span><strong>$errore_oggetto</strong></span>";} else { echo"";}?><br />
<input name="oggetto" type="text" id="oggetto" value="<?php echo $oggetto;?>" />
</label></td>
</tr>
<tr>
<td>Messaggio*</td>
<td>
<?php if (!$errore_messaggio=="") { echo"<span><strong>$errore_messaggio</strong></span>";} else { echo"";}?><br />
<textarea name="messaggio" cols="30" rows="5" id="messaggio" ><?php echo $messaggio;?></textarea>
</td>
</tr>
<tr>
<td><label>*I campi sono obbligatori
</label></td>
<td><label>
<input type="submit" value="Invia il modulo" name="bottone_invio" /> <input type="reset" name="cancella" id="cancella" value="Ripristina" />
</label></td>
</tr>
</table>
</form>
3.Questo controlla che la mail inserita non sia fasulla o scritta in malo modo.
Codice PHP:
<?php
}
function isValidEmail($email){
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
if (eregi($pattern, $email)){
return true;
}
else {
return false;
}
}
function controlla($stringa,$lunghezza){
if (strlen($stringa)<$lunghezza){
return true;
}
else {
return false;
}
}
?>
4.Questo è ciò che andremo a ricevere e nel caso ci sia un errore la mail non parte.
Codice PHP:
<?php if (!isset($_POST['bottone_invio'])) {
generaModulo();
} else {
$oggetto = isset($_POST['oggetto']) ? stripslashes ($_POST['oggetto']) : "";
$email = isset($_POST['email']) ? stripslashes ($_POST['email']) : "";
$messaggio = isset($_POST['messaggio']) ? stripslashes ($_POST['messaggio']) : "";
$error = false;
$errore_oggetto = '';
$errore_email = '';
$errore_messaggio = '';
if (controlla($oggetto,1) or ($oggetto==segnaposto_oggetto)) {
$error = true;
$errore_oggetto = errore_oggetto_predefinito;
}
if (!isValidEmail($email)){
$error = true;
$errore_email = errore_email_predefinito;
}
if ((controlla($messaggio,1)) or ($messaggio==segnaposto_messaggio)) {
$error = true;
$errore_messaggio = errore_messaggio_predefinito;
}
if ($error){
generaModulo($oggetto,$email,$messaggio,$errore_oggetto,$errore_email,$errore_messaggio);
}
else {
?>
5. Se va a buon fine avremo stampato a video il riepilogo dopo l'invio
Codice PHP:
<p>
Ha inserito i seguenti dati:<br />
<br />
<b>Oggetto:</b> <?php echo $oggetto ?>
<br />
<b>Email:</b> <?php echo $email ?>
<br />
<b>Messaggio:</b> <?php echo $messaggio ?>
<br />
</p>
6. Questo è quello che ci arriverà e il ringraziamento per averci contattato.[/left]
Codice PHP:
<?php
if ($telefono == segnaposto_telefono) $telefono="-";
mail(_destinatario,"contatto dal tuo sito","Oggetto: $oggetto\nEmail: $email\nMessaggio:$messaggio","From:$email");
echo"<p>Grazie per aver inviato il messaggio</p>";?>
<?php } }
?>
Grazie a Pikadilly