È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!
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 2)

Ultimo Aggiornamento: 04/03/2005 11:58
OFFLINE
Post: 1.216
Senior

Inviare una mail dal web (Parte 2)

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)



Il codice PHP

Come anticipato nella prima parte del piccolo tutorial, nel nostro codice useremo la comoda funzione mail() del PHP. Non saranno compresi controlli sui campi (che credo affronteremo nella parte 3 del tutorial), ma vi sarà un semplice ciclo if / else che controllerà l'esatto invio della email all'indirizzo impostato.
Apriamo dunque una nuova pagina web che chiameremo inviaLaMail.php (vi ricordo che è proprio la pagina scritta nell' action del form HTML della parte 1), mentre tra i tag <body> della pagina appena creata scriviamo:

<?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 :-(";
	
	$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 invio
	if (@mail ($to , $soggetto , $body , "From: $email")) {
		echo "<h3>$invioOkTitolo</h3>";
		echo "<p>$invioOkCorpo</p>";
		echo "<p> </p>"; // crea paragrafo vuoto per creare uno spazio
		echo $back;
	}
	else {
		echo "<h3>$invioNoTitolo</h3>";
		echo "<p>$invioNoCorpo</p>";
		echo "<p> </p>"; // crea paragrafo vuoto per creare uno spazio
		echo $back;
	}
?>

Il codice direi che è oltremodo commentato quindi non mi dilungherò troppo in spiegazioni su come adattare lo script alle proprie esigenze. Ovviamente, in caso di problemi, potete commentare questo post.
Come scritto poco sopra per il momento non ho implementato controlli sui campi, questo per evitare di appesantire troppo presto il tutto... magari faccio appunto una parte 3.

Riguardo alle funzioni usate due parole le spenderei sull'istruzione if / else:
in pratica succede che SE l'invio è corretto, ovvero la condizione scritta tra parentesi tonde risulta vera, la funzione mail() verrà eseguita e verrà quindi visualizzato il codice dentro l' if, ALTRIMENTI la funzione mail() non verrà eseguita e apparirà il messaggio di errore.

Per quanto riguarda le altre funzioni usate, ovvero trim() e stripslashes vi rimando al manuale del PHP ( it.php.net/manual/it/function.trim.php e it.php.net/manual/it/function.stripslashes.php ). Comunque servono per ripulire il testo preso dagli input e dalla textarea prima di venire elaborati.

A questo punto uppando le nostre due pagine mail.html e inviaLaMail.php (devono stare nella stessa dir) saremo pronti ad inviare la nostra email dal web :-)



Per i pigri

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



Salut
drudo



Modificato da drudo 25/02/2005 13.26

Si consiglia la visione dell'immagine
con un browser degno di tal nome...
25/02/2005 13:25
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 3.050
Master

in pratica succede che SE l'invio è corretto, ovvero la condizione scritta tra parentesi tonde risulta vera, la funzione mail()



ma la funzione "mail()" è quella che agli effetti manda la mail?
nella condizione if:

if (@mail ($to , $soggetto , $body , "From: $email"))

tra parentesi c'è @mail più paramtri, ma @mail manda la mail effettivamente?


verrà eseguita e verrà quindi visualizzato il codice dentro l' if, ALTRIMENTI la funzione mail() non verrà eseguita e apparirà il messaggio di errore.




perchè se è così, quello che è tra parentesi tonde viene sempre eseguito, ma ritornerà un errore (se è come negli altri linguaggi, o 1 o 0)
Questo errore determinerà se la condizione è falsa o vera, e a seconda dei casi verranno eseguiti gli "echo"

no?
04/03/2005 11:36
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 1.234
Senior
Bah dato che quella sequenza non è un vero e proprio controllo, credo si interpreti semplicemente così:

- manda la mail con la funzione mail()
- se la condizione di invio non risulta vera (ovvero ci sono stati problemi), vado nell'else

[Modificato da drudo 04/03/2005 11.58]


Si consiglia la visione dell'immagine
con un browser degno di tal nome...
04/03/2005 11:58
 
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 10:53. Versione: Stampabile | Mobile
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com

mozilla is better!