Redazione
a- a+

Creare form in php imparando importanti nozioni base

Una volta che conoscete i principi fondamentali di sintassi edella struttura di PHP, è abbastanza semplice fare unpasso avanti e scrivere script più avanzati.
Poiché lavorare con i form è uno dei compitipiù comuni nello scrivere applicazioni per il web, ilprimo script che scriveremo sarà un form.
Anche se sarà una applicazione abbastanza semplice,vi introdurrà ad una gamma di concetti importanti,incluso il modo in cui PHP tratta le variabili che provengonodall'esterno dello script corrente.
In primo luogo, diamo una rapida occhiata a un form HTML epoi entriamo un po' nei dettagli per capire come i dativengono trasmessi dal form al server.

PRINCIPI FONDAMENTALI DI UN FORM
Probabilmente avrete lavorato con i form in HTML una dozzinadi volte, ma avete mai realmente pensato a comefunzionano?
Date un'occhiata a quanto segue:

<html><body><form action="page.php" method="post"><input type="text" name="name" value=""><input type="submit" name="submit" value="submit"></form></body></html>

 

Questo, probabilmente, è uno dei form piùsemplici che potete avere in una pagina.
Contiene un campo di testo chiamato "nome" e unpulsante di conferma.
Notate il metodo utilizzato nel tag d'inizio.
Come ricorderete, ci sono due opzioni per il metodo: GET ePOST, che determinano come le informazioni vengono trasmessedal form.
Senza cadere nel tecnico, questa è la differenza: GETtrasmette le informazioni del form collegandole all'URL,che è lo stesso modo in cui le informazioni vengonotrasmesse da un link.
POST, invece, trasmette le informazioni in modo trasparentecome parte dell'intestazione della pagina richiesta.
E' per questo che POST è solitamente scelto comemetodo per i form, a meno che state facendo il debug delvostro script e dovete vedere cosa viene trasmesso.
Più avanti capirete perché questa distinzioneè così importante da ricordare ai fini dellaprogrammazione.

DAL FORM A PHP
Una volta che il server riceve le informazioni di un formtrasmesse da uno script PHP, subentra la fase diprogrammazione.
Ogni valore passato dal form è automaticamentedisponibile allo script usando il nome dato all'input nelform.
Per esempio, se usate l'esempio sopra citato e inserite"Billy Joe e Bob" come nome, il nome di quel valorenello script sarà accessibile come una variazione di"nome".
La versione di PHP che si sta usando e la configurazione delfile PHP.ini determina esattamente quale variazione delvalore sarà disponibile.
Ecco le situazioni possibili:

1. track_vars è settato su "on" in PHP.ini:le variabile GET e POST saranno così disponibili:
$HTTP_POST_VARS e $http_GET_POST.
Per esempio:

$HTTP_POST_VARS["NAME"]

2. register_globals è settato su "on" inPHP.ini: le variabili GET e POST saranno disponibili nelformato standard delle variabili.
Per esempio: $name

3. register_globals e track_vars sono "on" nelPHP.ini: le variabili sono disponibili in etrambi i 
form.

4. PHP versione 4.1.0 o superiore: per motivi di sicurezzaregister_globals è stato disapprovato.
In sostituzione del vecchio $HTTP_POST_* è statointrodotto: $_GET e $_POST.

Per il resto di questo articolo, il nuovo $_* verràusato quando si tratta di variabili esterne a PHP.
Se state usando una vecchia versione di PHP, dovretesostituire le variabili usate negli script di esempio con unformato che funzioni con la vostra particolareconfigurazione, altrimenti è consigliabile aggiornarePHP, appena possibile, con una versione più recente.

SCRIVERE UN MAILER FORM
Prima che scriviate tutto lo script, è importanteanalizzare le funzioni di cui avete bisogno.
Per questo script, ecco le cose da includere:
* Visualizzate un form che permetta all'utente diinserire il suo nome, email e messaggio;
* Assicuratevi che tutti i campi vengano riempiti;
* Visualizzate un messaggio e rivisualizzate il form se icampi richiesti sono mancanti;
* Effettuate una convalida dell'indirizzo emaildell'utente;
* Spedite il messaggio dell'utente via email;
* Visualizzate una pagina di ringraziamento.

Così come qualsiasi altro progetto, dovete avere unmodello mentale o scritto di quello che volete fare, inquesto modo ridurrete la quantità di cambiamentiperché avete dimenticato qualche cosa, scriveretecosì lo script in modo più semplice e veloce.

IL FORM

<html><body><br><br><?=$errormessage?><br><form action="<?=$_SERVER['PHP_SELF']?>" method="post"><table width="500" border="0" cellpadding="5" cellspacing="0"><tr><td>Your name:</td><td><input type="text" name="name" value="<?=$_POST['name']?>"></td></tr><tr><td>Your email:</td><td><input type="text" name="email" value="<?=$_POST['email']?>"><td><tr><tr><td>Your message:</td><td><textarea name="message"><?=$_POST['message']?></textarea></td></tr></table><input type="hidden" name="required" value="name,email,message"><input type="submit" name="submit" value="submit"></body></html>

 

Salvate questo come form.php e dateci un'occhiata.
Per la maggior parte, questo form è rigorosamenteHTML. Ci sono 3 campi: nome, email e messaggio, chel'utente dovrà riempire.
Usiamo $_SERVER['PHP_SELF'], una variabile delserver che rappresenta il nome del file dello scriptattualmente in uso.

<?=$errormessage?>

non mostra nulla, a meno che ci sia un errore di inputdell'utente, in questo caso sarà sostituito da unmessaggio di errore.

Inoltre notate che PHP è usato per settare un valoredi default per ognuno di questi campi. Se l'utente lasciaun campo vuoto, rivisualizzeremo il form. Per evitare che gliutenti debbano inserire di nuovo tutti i dati nei campi,useremo i valori utilizzati la prima volta che hannoconfermato il form.

PHP
Come accennato prima, PHP per eseguire il form, si trovanello stesso file dell'HTML. Questo renderà facilerivisualizzare il form se ci dovesse essere un erroredell'utente.
Se il form è convalidato, spediremo una email efermeremo l'esecuzione dello script.
Se c'è un problema con quello che l'utente haconfermato, assegneremo un messaggio di errore a$errormessage e il form verrà automaticamenterivisualizzato.

La prima linea di PHP controlla se il form è statoconfermato oppure no. Il modo più semplice per farequesto è vedere se un valore del form èpresente oppure no. Siccome il valore del pulsante diconferma è sempre trasmesso con il form, èun'idea utilizzare per il controllo:

<?phpif ($_POST['submit']) {print "the form has been submitted";}?>

Aggiungete questo codice prima dell'HTML nel form.php eavviate il file dal vostro browser. Quando compilate il forme premete il pulsante di conferma, verrà mostratonella parte superiore del vostro browser: "il formè stato confermato".

Il punto seguente è di controllare e assicurarsi chetutti i campi richiesti siano stati compilati.
Per far questo possiamo usare una funzione di PHP che siachiama explode() e va usata come segue:

<?phpif ($_POST['submit']) {$required_fields = explode(" ," , $_POST['required']);

Ora invece andiamo a controllare che tutti i campi sianostati riempiti, altrimenti dovremo segnalare l'errore:

 

$error = 0;foreach($required_fields as $fieldname) {if ($_POST[$fieldname] == "") {$error++;}}

 

 

Se $error è ancora uguale a 0 dopo la fine del ciclo,allora sappiamo che l'utente ha compilato tutti i campi enoi possiamo proseguire facendo alcune semplici verifichesull'indirizzo email.

if ($error == 0) {if (strstr($_POST['email'], "@") and strstr($_POST['email'], ".")) {

Usando la funzione PHP "strstr()" , ladichiarazione "if" controlla semplicemente che cisia un @ e un punto nell'indirizzo email.
E' possibile anche effettuare controlli piùcomplessi andando a verificare l'adeguata sintassidell'indirizzo email e persino l'esistenza deldominio, così da eliminare un falso indirizzo emailche l'utente può aver inserito.
Se l'indirzzo email contiene entrambi i valori, allorapossiamo spedire l'email dell'utente.

PHP include una funzione per spedire email e si chiamamail().
Questo è il suo formato: mail (a, oggetto,messaggio).
In aggiunta è possibile inserire altri parametri,come per esempio: rispondere all'indirizzo, aggiungereulteriori destinatari o aggiungere parametri al testo(formato testo o HTML).
Per questo script, tutto quello che ci serve sono iparametri di base (ricordate di sostituire youremail@your.comcon il vostro indirizzo di posta elettronica).

mail("youremail@your.com" , "Message from Web Form" , $_POST['message'], "From: $_POST[name] <$_POST[email]>");

Dopo aver spedito l'email, abbiamo bisogno di mostrare unmessaggio all'utente che lo informi dell'avvenutaspedizione dell'email.
Avendo inserito il suo nome, è possibile creare unmessaggio personalizzato:

print "<html><body>Thank you for submitting your comments $_POST[name]!</body></html>";exit;

oppure, ancora meglio, re indirizzarlo ad un'altrapagina:

header("Location:http://yourdomain.com/thanks.php?name=$_POST[name]"); exit;

Ora che abbiamo visto come lavorare con la parte di scriptche riguarda la spedizione dell'email, possiamo fare unpasso in avanti e occuparci della gestione degli errori.
In questo esempio, verrà mostrato un errore cheriguarda la non avvenuta convalida dell'indirizzo email esi avverte l'utente che l'indirizzo inserito nonè valido

 

} else { $errormessage = "<b>The email address you entered does not appear to be valid<br></b>";}Mentre in quest'altro esempio, viene fatto presente all'utente che non tutti campi sono stati compilati e che deve compilare il form in tutte le sue parti:} else {$errormessage = "<b>You have left some required fields in the form blank! Please fill in the form completely.";}}?>

 

Con questo abbiamo terminato.

COSE DA RICORDARE:

* I form possono essere spediti usando come metodo sia GETche POST.
GET lavora nello steso modo in cui lavorano i link: i dativengono spediti collegandoli all'URL.
Mentre con POST i dati vengono spediti come partidell'intestazione.
Quest'ultimo metodo è il più sicuro inquanto l'utente non vede le informazioni che vengonopassate e non ci sono limitazioni del browser riguardo lalunghezza dell'URL
* La coppia nome/valore passata ad uno script PHP da un form(o link) è immediatamente disponibile.
* In base alla versione PHP usata e alla configurazione delfile PHP.ini, l'esatto formato delle variabili esternepuò essere differente



Ti potrebbe interessare anche

commenta la notizia

Ci sono 1 commenti