Notizie, Software download, File Sharing, Guide e Manuali, Emule, Emuleplus, eDonkey, Winmx, Divx, Gnutella, Linux windows



Ultime News da Pweb! (?)

 
Stampa | Notifica email    
Autore

<PHP> Inviare una mail dal web (Parte 3) - Controllo sui campi

Ultimo Aggiornamento: 28/02/2005 22:20
OFFLINE
Post: 1.223
Senior

Inviare una mail dal web (Parte 3) - Controllo sui campi

Un breve articolo su come spedire ad un indirizzo e-mail dei dati raccolti da un form.

Riferimenti:
Inviare una mail dal web (Parte 1)
Inviare una mail dal web (Parte 2)



Controlliamo i campi con PHP

Nelle guide precedenti abbiamo visto come spedire una mail tramite un form HTML grazie alla funzione mail(), ma senza affrontare la (doverosa) problematica del controllo sui campi.
Come nella maggior parte dei form alcuni campi andrebbero resi obbligatori, nel nostro caso, ad esempio, il campo "Commento" se spedito vuoto renderebbe decisamente inutile tutto il form. Quindi andremo ora a vedere come controllare il tutto tramite semplici cicli in modo da segnalare un errore in caso uno o più di essi fossero vuoto.

// controllo del capo "nome"
if($nome == "") {
	echo "<h3>$invioNoTitolo</h3>";
	echo "<p>$campiNoCorpo</p>";
	echo "<p>&nbsp;</p>"; // crea paragrafo vuoto per creare uno spazio
	echo $back;
}

Se i campi da controllare sono più d'uno (nel nostro caso ad es. vogliamo controllare anche i campi "Commento" e "email") possiamo riassumere la condizione dell' if grazie all' operatore booleano || (OR), quindi scrivere:

// controllo campi "nome", "commento" ed "email"
if(($nome == "") || ($commento == "") || ($email == "")) {
	echo "<h3>$invioNoTitolo</h3>";
	echo "<p>$campiNoCorpo</p>";
	echo "<p>&nbsp;</p>"; // crea paragrafo vuoto per creare uno spazio
	echo $back;
}

Naturalmente bisogna aggiungere la nuova variabile $campiNoCorpo:
$campiNoCorpo = "Campi obbligatori vuoti o non validi.";




Miglioriamo il controllo sul campo email

Come ben sappiamo un' email è sempre della forma io@host.xx, ovvero:

* caratteri alfanumerici dalla "a" alla "z", da "0" a "9" più altri caratteri _ (underscore), ecc.
* carattere "@" (chiocciolina)
* altri caratteri descritti pocanzi
* il . (punto)
* un minimo di 2 e massimo di 4 caratteri dalla "a" alla "z"

così grazie alla funzione eregi() possiamo tradurre quella lista di proprità in una cosa del genere:

// ulteriore controllo campo email
else if(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})",$email)) {
	echo "<h3>$invioNoTitolo</h3>";
	echo "<p>$campiNoCorpo</p>";
	echo "<p>&nbsp;</p>"; // crea paragrafo vuoto per creare uno spazio
	echo $back;
}

Il risultato finale sarà quindi il seguente:

// controllo campi "nome", "commento" ed "email"
if(($nome == "") || ($commento == "") || ($email == "")){
	echo "<h3>$invioNoTitolo</h3>";
	echo "<p>$campiNoCorpo</p>";
	echo "<p>&nbsp;</p>"; // crea paragrafo vuoto per creare uno spazio
	echo $back;
}

// ulteriore controllo campo email
else if(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})",$email)) {
	echo "<h3>$invioNoTitolo</h3>";
	echo "<p>$campiNoCorpo</p>";
	echo "<p>&nbsp;</p>"; // crea paragrafo vuoto per creare uno spazio
	echo $back;
}



Il codice PHP finale

Mettendo tutto in ordine nella pagina inviaLaMail.php andremo a scrivere:

<?php
	
	/*********** variabili da settare ***********/
	
	$to = "tua_mail@tuo_host.it"; //indirizzo email a cui verrà inviata l'email
	$soggetto = "Contatto spedito dal mio sito"; //è il soggetto che comparirà nell'email
	
	$invioOkTitolo = "Contatto spedito correttamente :-)";
	$invioOkCorpo = "Grazie per avermi contattato";
	
	$invioNoTitolo = "Errore";
	$invioNoCorpo = "Si è verificato un errore... riprovare l'invio :-(";
	
	$campiNoCorpo = "Campi obbligatori vuoti o non validi.";
	
	$back = "<p><a href=\"javascript:history.back()\" title=\"Torna indietro\"><strong>Indietro</strong></a></p>";
	
	/*********** fine variabili da settare ***********/
	
	
	// costruzione corpo messaggio
	$body = "Nome: " . trim(stripslashes($_POST["nome"])) . "\n";
	$body .= "e-mail: " . trim($_POST["email"]) . "\n\n";
	$body .= "Commento: \n" . trim(stripslashes($_POST["commento"])) . "\n";
	
	// controllo campi "nome", "commento" ed "email"
	if(($nome == "") || ($commento == "") || ($email == "")) {
		echo "<h3>$invioNoTitolo</h3>";
		echo "<p>$campiNoCorpo</p>";
		echo "<p>&nbsp;</p>"; // crea paragrafo vuoto per creare uno spazio
		echo $back;
	}

	// ulteriore controllo campo email
	else if (!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $email)) {
		echo "<h3>$invioNoTitolo</h3>";
		echo "<p>$campiNoCorpo</p>";
		echo "<p>&nbsp;</p>"; // crea paragrafo vuoto per creare uno spazio
		echo $back;
	}
	
	// controllo invio
	else if (@mail ($to , $soggetto , $body , "From: $email")) {
		echo "<h3>$invioOkTitolo</h3>";
		echo "<p>$invioOkCorpo</p>";
		echo "<p>&nbsp;</p>"; // crea paragrafo vuoto per creare uno spazio
		echo $back;
	}
	
	else {
		echo "<h3>$invioNoTitolo</h3>";
		echo "<p>$invioNoCorpo</p>";
		echo "<p>&nbsp;</p>"; // crea paragrafo vuoto per creare uno spazio
		echo $back;
	}
?>




Per i pigri

Per i più pigri ecco le due pagine belle pronte:
invio_mail_02.zip




Salut
drudo

Si consiglia la visione dell'immagine
con un browser degno di tal nome...
28/02/2005 22:20
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum

Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Crea forum gratis, gestisci la tua comunità! Iscriviti a FreeForumZone
FreeForumZone [v.6.1] - Leggendo la pagina si accettano regolamento e privacy
Tutti gli orari sono GMT+01:00. Adesso sono le 02:02. Versione: Stampabile | Mobile
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com

mozilla is better!