Come creare un form di invio email in PHP
Quando creiamo un sito internet, nella stragrande maggioranza delle volte, dobbiamo inserire una pagina contatti, offrendo all’utente la possibilità di contattare via email il titolare del sito internet. Per farlo esistono diversi modi a seconda della modalità con la quale stiamo costruendo le nostre pagine web.
C’è il classico tag html “mailto”, come i più complicati ma sicuramente più pratici e gradevoli form in PHP.
Per prima cosa abbiamo bisogno dell’editor di testo che usiamo abitualmente, dreamweaver è il mio, e creiamo il foglio di stile contact.php e partiamo da un form con le voci Name, Email, Web Site e Message:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” |
“//www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”> |
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ /> |
<title>Modulo contatti in PHP | Your Inspiration Web</title> |
<link rel=”stylesheet” type=”text/css” href=”stile.css” /> |
<form action=”” method=”post” id=”formYIW”> |
<legend><span>Inviaci un messaggio</span></legend> |
<label for=”nome”>Nome <abbr title=”campo obbligatorio”>*</abbr></label> |
<input type=”text” name=”nome” id=”nome” tabindex=”1″/> |
<label for=”email”>Email <abbr title=”campo obbligatorio”>*</abbr></label> |
<input type=”text” name=”email” id=”email” tabindex=”2″/> |
<label for=”sito”>Sito web</label> |
<input type=”text” name=”sito” id=”sito” tabindex=”3″/> |
<label for=”messaggio”>Messaggio <abbr title=”campo obbligatorio”>*</abbr></label> |
<textarea name=”messaggio” id=”messaggio” rows=”10″ cols=”30″ tabindex=”4″></textarea> |
<input type=”submit” name=”submit” id=”submit” value=”Invia Mail” tabindex=”5″ /> |
</html>
Andiamo a dare l’ “action” al nostro codice e gli diciamo che il form e la relativa gestione di esso devono riferirsi entrambi a contact.php:
<form action=”contatti.php” method=”post” id=”formYIW”> |
…
Ora dobbiamo inserire le variabili per dire dire al nostro codice le modalità con la quali gestire le diverse situazioni in cui ci si può trovare quando qualcuno vuole inviare un’email.
Per la gestione delle variabili “post” inseriamo tre array, le più comuni:
- “$expected”, che ospita i nomi dei campi che ci secondo noi dovremmo ricevere. Questo serve per evitare che un utente malintenzionato possa modificare l’operato del nostro form, aggiungendo campi nascosti.
- “$required”, che ospita i nomi dei campi obbligatori.
- “$missing”, array inizialmente vuoto, che ospiterà eventuali campi obbligatori, ma non compilati.
Queste tre array finiranno in un altro foglio di ile che chiameremo settings.php e poi lo includeremo nel nostro contact.php
Elenca i campi che ci si aspetta di ricevere. |
Evita che qualcuno possa aggiungere dei campi non previsti */ |
$expected = array(‘nome’,’email’,’sito’,’messaggio’); |
//imposta i campi obbligatori |
$required = array(‘nome’,’email’,’messaggio’); |
//crea un array vuoto per i campi mancanti |
require_once ‘settings.php’; |
if(isset($_POST[‘submit’])){ |
E dopo di che inseriamo l’esamina delle nostre array:
if(isset($_POST[‘submit’])){ |
foreach ($_POST as $key => $value){ |
//elimina eventuali spazi aggiuntivi |
//se è richiesta ma vuota aggiungila all’array missing |
if(!strlen ($temp) && in_array($key, $required)){ |
array_push($missing, $key); |
//se il campo è aspettato, setta la variabile associata |
elseif(in_array($key, $expected)){ |
${$key} = htmlentities($temp); //in questo caso crea $nome, $email, $sito, $commento |
Adesso entriamo nel vivo del nostro form contatti e inseriamo il codice per la struttura del messaggio.
Php ha la funzione email con la seguente sintassi:
mail($destinatario, $oggetto, $contenuto_email, ‘From: ‘. $email_mittente); |
Non ci resta che costruire il nostro messaggio, facendolo in modo tale da tenere sotto controllo chi ci invia un messaggio e non trascurando ogni particolare. Il messaggio che noi riceveremo dovrà essere leggibile da tutti e non dovrà essere un poema, quindi limiteremo con 80 il numero dei caratteri disponibile a chi ci vuole scrivere.
Inseriamo per la costruzione del messaggio il seguente codice:
$contenuto_email = “Nome: $nome\n\n”; //Queste variabili sono create nel passaggio precedente |
$contenuto_email .= “Email: $email\n\n”; |
$contenuto_email .= “Sito Web: $sito\n\n”; |
$contenuto_email .= “Messaggio:\n $messaggio\n\n”; |
//limita la lunghezza a 70 caratteri per la compatibilità |
$contenuto_email = wordwrap($contenuto_email,80); |
$mail_sent = mail($destinatario,$oggetto,$contenuto_email, ‘From: ‘.$email); |
//Se l’email viene inviata l’array missing non serve più quindi lo svuoto |
E, fondamentale, inseriamo il destinatario del messaggio con la sua email e l’oggetto che arriverà ad ogni messaggio che riceveremo dal nostro sito (in genere si usa dal sito web www.taldetali.com:
//email del destinatario del form |
$destinatario = ‘indirizzo@email.com’; |
//oggetto dell’email inviata |
$oggetto = ‘Mail dal sito www.taldetali.com’; |
Commenti