Form Mail in PHP PDF Stampa E-mail
Vediamo in questo articolo come costruire una delle funzionalità più spesso implementate in un sito web, un semplice ma utile form per l'invio di email direttamente dal vostro sito. L'esempio sarà costituito da una parte in html, per la creazione del form, ed una in php, per la validazione dell'input e l'invio vero e proprio dell'email. Precisiamo sin da ora  che affinchè lo script funzioni è necessario che sul server sia installato un server smtp e che sia stato correttamente configurato affinchè la funzione mail() che esamineremo in seguito si interfacci direttamente a suddetto server. Vi consigliamo di chiedere al vostro provider se non siete sicuri che il vostro piano di hosting supporti una simile funzionalità.

Andiamo subito a vedere la parte HTML (il file si potrebbe chiamare form_mail.php):
        
    <form method="POST" action="mail.php">
    
    <label for="nome">Nome e cognome</label><br />
    <input type="text" name="nome" size="30" /><br />

    <label for="contatto">Contatto (necessario per risposta)</label><br />
    <input type="text" name="contatto" size="30" /><br />

    <label for="messaggio">Testo</label><br />
    <textarea name="messaggio" cols="40" rows="7">Scrivi qui il tuo messaggio</textarea><br />

    <input type="hidden" value="true" name="check" />
    <input type="submit" value="invia" />    

    </form>                    

Nella prima riga dobbiamo specificare il nome del file php che processerà la richiesta, in questo caso mail.php. Seguono i vari tag per indicare che tipo di campi devono comparire nel form, in questo caso abbiamo 2 campi testo per il nome e per un contatto (telefonico o email) ed un campo textarea (testo grande) per il messaggio vero e proprio. Il campo hidden è un controllo il cui significato ci sarà chiaro successivamente, mentre il tipo 'submit' serve a far comparire il bottone per l'invio del form. Quando l'utente lo clicca, il controllo passa allo script mail.php:

<?

if($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['check'] == 'true') {

if( "$_POST[nome]" != "" && "$_POST[contatto]" != "" && "$_POST[messaggio]" != "") {
$a = " Indirizzo e-mail protetto dal bots spam , deve abilitare Javascript per vederlo ";
$oggetto = "E-mail inviata dal tuo sito";
$mittente = " Indirizzo e-mail protetto dal bots spam , deve abilitare Javascript per vederlo ";
$messaggio =

"Ciao, $_POST[nome] ti ha inviato una email! Ha dichiarato di voler ricevere
una risposta qua: $_POST[contatto]. Questo il suo messagio:\n
$_POST[messaggio]";

mail($a, $oggetto, $messaggio, "From: $mittente");

}
else header("location: formail_nodati.php");
}
else header("location: form_mail.php")

?>

Per prima cosa lo script controlla se il campo check è impsotato a 'true': se così non fosse, vuol dire che lo script mail.php per qualche ragione NON è stato chiamato dalla pagina form_mail.php, probabilmente l'utente è arrivato qua attraverso un collegamento sbagliato. Ad ogni modo, se non proviene dalla pagina con il modulo, di certo non può aver scritto il suo messaggio, dunque attraverso l'istruzione header(location: form_mail.php) lo rimandiamo alla pagina corretta.

In seguito, lo script controlla che i 3 campi non siano stati lasciati vuoti: se così fosse, reindirizziamo l'utente alla pagina formail_nodati.php, in cui verrà presentato un messaggio per dirgli che è necessario completare tutti i campi. Se invece questi campi sono stati riempiti, costruiamo le variabili che utilizzerà la funzione mail(), ovvero specifichiamo:

1) un destinatario ($a)
2) un oggetto ($oggetto)
3) un mittente ($mittente)
4) un messaggio ($messaggio), nel quale vengono scritti messaggio, contatto e nome lasciati dall'utente.

Una volta costruite le variabili, possiamo chiamare la funzione mail() impostando tutti i parametri in ordine, come nell'esempio, e se tutto è andato bene, farà esattamente quello che ci si aspetta!

Dopo il codice dello script, si può inserire se si vuole l'HTML per ringraziare l'utente dell'email e rimandarlo alla pagina iniziale.

 

Simone Frattegiani 

 
< Prec.   Pros. >
Voi disegnate noi ritagliamo