Il problema dell'invio dati da un form attraverso il php è stato già affrontato, in termini più sintetici e generali, nella lezione dedicata ai form in html. Consideriamo ora di nuovo il form presentato nella lezione precedente:
con il seguente PHP:
<form method="get" action="elabora.php" enctype="multipart/form-data">
<strong>Nome:</strong><input type="text" name="nome">
<br>
<strong>Cognome: </strong>
<input type="text" name="cognome">
<br>
<strong>Indirizzo mail:</strong><input type="text" name="mail">
<p><strong>Scrivi qui sotto il tuo messaggio:</strong></p>
<textarea name="messaggio" cols="30" ></textarea>
<br>
<input type="submit" value="Invia">
</form>
e supponiamo di voler scrivere una pagina "elabora.php" che riceve i valori del form e li invia a un indirizzo mail (l'indirizzo mail del webmaster, il proprietario del sito). La situazione è schematizzata nella figura seguente:
Per inviare una mail dal server a un indirizzo di posta elettronica bisogna usare l'istruzione mail, con la seguente sintassi (semplificata):
mail(destinatario, oggetto, messaggio);
dove:
- destinatario è l'indirizzo mail a cui dovrà essere inviata la mail;
- oggetto è l'oggetto (il titolo) della mai;
- messaggio è il messaggio contenuto nel corpo della mail.
Con riferimento al nostro esempio precedente, ecco come potrebbe essere scritta la pagina elabora.php per l'invio dei dati del form all'indirizzo webmaster@programmiamo.it:
<?php
$nome = $_REQUEST['nome'];
$cognome = $_REQUEST['cognome'];
$mail = $_REQUEST['mail'];
$messaggio = $_REQUEST['messaggio'];
$titolo = "Messaggio da un visitatore del sito";
$corpo =
"Messaggio da ".$nome." ".$cognome."(email ".$mail.")";
$corpo = $corpo."\n".$messaggio;
mail("webmaster@programmiamo.it",$titolo,$corpo);
?>
A questo punto il webmaster riceverà (direttamente dal server che ospita il suo sito) una mail di questo genere:
Si noti il campo Da: che contiene Apache: si tratta del nome del server che ha inviato il messaggio all'utente.
Sito realizzato in base al
template offerto da
http://www.graphixmania.it