PROGRAMMIAMO
Html - Elaborazione form in PHP
Form per l'invio dati via mail

Affronteremo in maggiore dettaglio l'argomento dei linguaggi di scripting nelle sezioni dedicate al linguaggio javascript e al php. Si veda in particolare la lezione dedicata proprio al problema dell'invio dei dati di un form usando una pagina php.

Vogliamo qui semplicemente fornire un esempio di utilizzo di questi linguaggi per affrontare il problema dell'invio di dati utente attraverso un form.

A tale scopo consideriamo nuovamente un semplice form già visto in precedenza:

Nome:

Mail:

Commento:


il cui codice html è il seguente:

<form action="mailto:pinco.pallino@libero.it" method="post" name = "utente" enctype="text/plain">

<p>
<strong>Nome:</strong><br>
<input type="text" name="nome">
</p>
<p>
<strong>Mail:</strong><br>
<input type="text" name="mail">
</p>
<p>
<strong>Commento:</strong><br>
<input type="text" name="commento">
</p>
<p>
<input type="submit" value="Invia">
<input type="reset" value="Annulla">
</p>

</form>

L'attributo action indicato nel tag form (action="mailto:pinco.pallino@libero.it") serve per fornire l'indirizzo mail al quale dovrà essere inviato il form stesso. Abbiamo tuttavia già detto che non è una buona idea esporre in chiaro il proprio indirizzo mail in un form, perché tale indirizzo diventa immediatamente visibile e disponibile a tutti in rete.

Una soluzione senz'altro migliore è quella di affidare al server che ospita il nostro sito il compito di elaborare il form e di inviarci via mail i risultati.

Invio automatico mail dal server

Per ottenere l'elaborazione della mail da parte del server, dobbiamo scrivere una semplice pagina in PHP. Il PHP è un linguaggio di programmazione lato server, cioè è un linguaggio per scrivere programmi da fare eseguire al server. Nel nostro caso dobbiamo per prima cosa modificare il form nel seguente modo:

<form action="elabora.php" method="post" name = "utente" enctype="multipart/form-data"> 

Notiamo anzitutto che l'attributo enctype è stato modificato. Ora non è più "text/plain" ma è diventato "multipart/form-data".

Il nome elabora.php può essere cambiato a piacere. L'essenziale è che si tratti di un file con estensione php (e non html come al solito). In pratica elabora.php è il nome di una pagina alla quale viene passato il contenuto del form (cioè i dati inseriti dall'utente) e che si occupa di elaborarlo.

Come mostra la figura seguente l'elaborazione dei dati e l'invio del form non vengono effettuati sul computer dove viene eseguito il browser dell'utente (computer client), ma sul server remoto che ospita la nostra pagina (computer server):

Per quanto riguarda la pagina elabora.php, essa può essere scritta con un normale editor di testo e salvata con estensione php. Il suo contenuto potrebbe essere quello mostrato qui di seguito:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
<title>Pagina php per l'elaborazione di un form e l'invio di mail lato server</title>
<link rel="stylesheet" href="stili.css" type="text/css">
</head>
<body>
<?php
# Inserite al posto di pippo@pluto.it il vostro indirizzo mail
$mail_to = "pippo@pluto.it";
# Questo è il campo oggetto della mail
$mail_subject = "Messaggio da".$_POST['nome'];
# Acquisizione dei dati utente dal form
$mail_body  = "\n Nome: " .$_POST['nome']. " \n";
$mail_body .= "\n Email: " .$_POST['mail']. " \n";
$mail_body .= "\n Messaggio: " .$_POST['commento']. " \n";
$mittente = "From: <".$_POST['mail'].">\n";
# Invio del messaggio via mail
$mail_body = stripslashes($mail_body);
mail($mail_to, $mail_subject, $mail_body,$mittente);
?>
<p>La mail è stata inviata correttamente!</p>
</body>
</html>

Senza entrare qui nei dettagli del significato delle istruzioni usate, si osservi che la pagina elabora.php si presenta come una normale pagina html a parte una serie di istruzioni, racchiuse fra <?php e ?>, che costituiscono il codice php della pagina. Questa è in effetti la parte che dovrà essere elaborata dal computer server per l'invio del form via mail.

Dal momento che la pagina elabora.php contiene codice php, essa non può essere visualizzata sul computer utente (a meno che su questo computer non venga installato un server php). Per poterla visualizzare occorre caricarla sul server remoto (quello che ospita il nostro sito).

 

Corrispondenza fra l'attributo name e il codice PHP

Affinché l'invio funzioni correttamente, è importante che l'attributo name di ogni campo del form corrisponda col codice scritto in PHP. La figura seguente dovrebbe chiarire un po' meglio il concetto:

Corrispondenza attributo name nel form e php

I nomi usati possono ovviamente essere scelti liberamente. Se si desiderano aggiungere altri campi al form, bisogna naturalmente aggiungere nella pagina php la corrispondente elaborazione (come l'esempio precedente).

Per aggiungere l'elaborazione e l'invio via mail di altri tipi campi (option, radio etc), vedere questo esempio.

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it