Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Sviluppo e Gestione siti web > Php - Mysql > Scripting e Risorse utili
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 04-11-07, 19:29   #1 (permalink)
MZ
Moderatore
 
L'avatar di MZ
 
Data di registrazione: Jun 2005
Ubicazione: Lecce-Torino
Messaggi: 509
[Tutorial] Gestione di un form mail semplice

Invio mail da web form by pikadilly

Lo script illustrato di seguito può essere utile a tutti coloro che hanno incontrato problemi con la creazione di un form per l'invio di mail

Si tratta di uno script di base, ma utile per capire i meccanismi.
Da questo punto in poi la parola a pikadilly che mi ha gentilmente inviato lo script e la sua descrizione.

"La domanda che spesso viene fatta è: "come faccio ad inviare un modulo

dalla mia pagina web alla mia mail?", le risposte prevedono sempre la comparsa della parola "programmazione". Di seguito vedremo un semplice script che permette di inviare una mail dal nostro sito alla nostra casella e-mail, funziona anche se la casella di posta è una webmail.
Anzitutto abbiamo due pagine che chiameremo:


"modulo.html"
"invio.php"

modulo.html conterrà la form in cui si inseriranno di dati, per esempio:

-E-mail
-Oggetto
-Messaggio


Per ogni campo sopracitato si deve sapere il nome, name, tipo, type, e id, che rimane id.
quindi il codice sarà così ad esempio per l'oggetto della mail.

<input name="object" type="text" id="object" />

Vediamo la form nella pagina modulo.html nell'insieme:


Codice PHP:
<form action="invio.php" method="post" id="modulo">
 <
table>
  <
tr>
  <
td>Il Suo indirizzo e-mail*</td>
   <
td><label>
  <
input name="mail" type="text" id="mail" />
  </
label></td>
  </
tr>
  <
tr>
  <
td>Oggetto*</td>
  <
td><label>
  <
input name="object" type="text" id="object" />
  </
label></td>
  </
tr>
  <
tr>
   <
td>Messaggio*</td>
   <
td>
   <
textarea name="body" cols="30" rows="5" id="body"></textarea>
  </
td>
  </
tr>
  <
tr>
  <
td><label></label>
  </
td>
  <
td><label>
<
input type="submit" name="submit" id="submit" value="Invia" /> <input type="reset" name="cancella" id="cancella" value="Ripristina" />
  </
label></td>
  </
tr>
  </
table>
  </
form
Ogni campo di testo ha un suo id che verrà trasmesso alla pagina invio.php che processerà il tutto e spedirà i risultati all'indirizzo mail che andremo a specificare in seguito.
Come si può notare, all'apertura del tag <form> è stato aggiunto:
action="invio.php" method="post"
"Action" determina l'azione, ovvero invia ad invio.php tutto quello contenuto nel modulo, "post" indica invece il metodo.

Passiamo alla pagina invio.php
In invio.php ponete questo codice tra i tag body:

Codice PHP:
<?php
  
// indirizzo di chi riceve la mail è sottolineato ma nel codice non sottilineatelo 
 
if ((trim($_POST['object']) != "") && (trim($_POST['body']) != "")) {    //questo fa si che se i campi "oggetto" e "messaggio" sono vuoti la form non invia nessuna mail
  
$to "      \n nome@dominio.it      Indirizzo e-mail protetto dal bots spam , deve abilitare Javascript per vederlo    ";
$headers "From: " $_POST['mail'] . "\n";
  
// soggetto della mail
  
$subject "Modulo proveniente da www.tuosito.it";
  
  
// corpo messaggio
  
$body "Contenuto del modulo:\n\n";
  
$body .= "Inviata da: " trim(stripslashes($_POST["mail"])) . "\n"//indirizzo e-mail che manda la mail, come si vede riprende l'id del campo destinato all'inserimento della mail del mittente
  
  
$body .= "Oggetto: " trim(stripslashes($_POST["object"])) . "\n"//oggetto del messaggio
  
$body .= "testo: " trim(stripslashes($_POST["body"])) . "\n"//messaggio
  
  
  // invio mail
  
mail($to$subject$body$headers); // SE L'INOLTRO E' ANDATO A BUON FINE...
  
  
echo "La mail è stata inviata con successo. Grazie per averci contattato";
  
  } else {
// altrimenti
  
echo "Deve compilare la form prima di inviare.";
  
  }
  
  
?>
Inserendo questo codice nella pagina invio.php e settando la vostra mail al posto di " nome@dominio.it" riceverete una mail dalla vostra web form.

Una cosa fondamentale è la codifica dei caratteri.
Per ricevere una mail priva di lettere strane tipo questa "è" o apostrofi preceduti da " \" è necessario che la codifica dei caratteri nei metatag sia impostata così:

Codice PHP:
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
Alcuni programmi di defaultl mettono:


Codice PHP:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />. 


Grazie pikadilly
Files allegati
Tipo di file: zip webmailsemplice.zip (4.2 KB, 483 visite)
__________________
MZ non in linea   Rispondi citando
Vecchio 04-11-07, 19:51   #2 (permalink)
Esperta
 
L'avatar di pikadilly
 
Data di registrazione: Dec 2006
Ubicazione: Old City
Messaggi: 6,290
Invia un messaggio tramite ICQ a pikadilly
Io invece ringrazio Gmassi e Adriano_Bari per avermi aiutato a risolvere il problema degli accenti e degli apostrofi nelle mail che si ricevono dalla web form.
Grazie Mz per l'inserimento
pikadilly non in linea   Rispondi citando
Vecchio 26-01-08, 17:27   #3 (permalink)
User Newbie
 
Data di registrazione: Jan 2008
Messaggi: 2
Wink non ho grandi conoscenze

ma cerchero' di contribuire con piccole cose...ciao
Raffa non in linea   Rispondi citando
Vecchio 26-01-08, 17:32   #4 (permalink)
User Newbie
 
Data di registrazione: Jan 2008
Messaggi: 2
scusate l'ignoranza sono nuova.... ma tutto questo script lo si incolla in un' unica pagina semplice di html ?
Raffa non in linea   Rispondi citando
Vecchio 26-01-08, 17:35   #5 (permalink)
Esperta
 
L'avatar di pikadilly
 
Data di registrazione: Dec 2006
Ubicazione: Old City
Messaggi: 6,290
Invia un messaggio tramite ICQ a pikadilly
Ciao Raffa,
la pagina che contiene il form può anche essere una semplice pagina html ma la seconda (invio.php) deve essere .php.

Tu inserisci tutto il codice php nella pagina .php (scusa le ripetizioni).

pikadilly non in linea   Rispondi citando
Vecchio 29-01-08, 20:08   #6 (permalink)
 
L'avatar di Davide-Al
 
Data di registrazione: Nov 2007
Messaggi: 201
problema form....SEMPRE

Ciao, non riesco a far funzionare il mio form,, credo che c'è qualche problema su su invio.php?
prima dell'indirizzo email c'è una n...
quando provo a inviare i dati dice invio dati riuscito ma non mi arriva nessuna e-mail.......

<?php
// indirizzo di chi riceve la mail è sottolineato ma nel codice non sottilineatelo
if ((trim($_POST['object']) != "") && (trim($_POST['body']) != "")) { //questo fa si che se i campi "oggetto" e "messaggio" sono vuoti la form non invia nessuna mail
$to = " \n E-MAIL MIO SITO.net Indirizzo e-mail protetto dal bots spam , deve abilitare Javascript per vederlo ";
$headers = "From: " . $_POST['mail'] . "\n";
// soggetto della mail
$subject = "Modulo proveniente da NOME MIO SITO.net";

// corpo messaggio
$body = "Contenuto del modulo:\n\n";

$body .= "Inviata da: " . trim(stripslashes($_POST["mail"])) . "\n"; //indirizzo e-mail che manda la mail, come si vede riprende l'id del campo destinato all'inserimento della mail del mittente

$body .= "Oggetto: " . trim(stripslashes($_POST["object"])) . "\n"; //oggetto del messaggio
$body .= "testo: " . trim(stripslashes($_POST["body"])) . "\n"; //messaggio


// invio mail
mail($to, $subject, $body, $headers); // SE L'INOLTRO E' ANDATO A BUON FINE...

echo "La mail è stata inviata con successo. Grazie per averci contattato";

} else {// altrimenti
echo "Deve compilare la form prima di inviare.";

}

?>
</body>
</html>
Davide-Al non in linea   Rispondi citando
Vecchio 29-01-08, 20:13   #7 (permalink)
Moderatore
 
L'avatar di massimux
 
Data di registrazione: Apr 2006
Ubicazione: Napoli
Messaggi: 764
Invia un messaggio tramite MSN a massimux Invia un messaggio tramite Skype a massimux
lo utilizzi in localhost?

magari non hai il client smtp attivo

prova in remoto
__________________
Perchè non ti fermi?
Da bravo Moderatore, Modero con Moderazione il Moderabile
massimux non in linea   Rispondi citando
Vecchio 29-01-08, 20:15   #8 (permalink)
 
L'avatar di Davide-Al
 
Data di registrazione: Nov 2007
Messaggi: 201
ho caricato i files su internet e da internet che faccio la prova
Davide-Al non in linea   Rispondi citando
Vecchio 29-01-08, 23:11   #9 (permalink)
Esperta
 
L'avatar di pikadilly
 
Data di registrazione: Dec 2006
Ubicazione: Old City
Messaggi: 6,290
Invia un messaggio tramite ICQ a pikadilly
Ho capito il problema...forse...
Hai scaricato lo zip o hai copiato e incollato quello scritto nel primo thread?

Probabilmente, se hai copiato e incollato il primo post del thread hai copiato anche questa dicitura:
Quote:
Indirizzo e-mail protetto dal bots spam
che si trova accanto a l'indirizzo e-mail.

Togli quella frase che non fa parte dello script e riprova, facci sapere.

pikadilly non in linea   Rispondi citando
Vecchio 30-01-08, 02:28   #10 (permalink)
 
L'avatar di Davide-Al
 
Data di registrazione: Nov 2007
Messaggi: 201
Siiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :-)

GRAZIEEEEEEEEE FUNZIONAAAAAAAAAA

CIAO..
Davide-Al non in linea   Rispondi citando
Vecchio 30-01-08, 03:03   #11 (permalink)
 
L'avatar di Davide-Al
 
Data di registrazione: Nov 2007
Messaggi: 201
problema form...ennesimo

Il form funziona, ho aggiunto altri cmpi coma nome e cognome, ma quando leggo la e-mail nn si vedono i nuovi campi... eppure ci sono gli id ..... ho aggiunto questo: ma nn arriva, ho cantato vittoria troppo presto

<tr>
<td><strong>Nome*</strong></td>
<td><label>
<input name="nome" type="text" id="nome" size="100" />
</label></td>
</tr>
<tr>
<td><strong>Cognome*</strong></td>
<td><label>
<input name="cognome" type="text" id="cognome" size="100" />
</label></td>
</tr>
Davide-Al non in linea   Rispondi citando
Vecchio 30-01-08, 03:21   #12 (permalink)
 
L'avatar di Davide-Al
 
Data di registrazione: Nov 2007
Messaggi: 201
Sono Arrivato Alla Soluzione

ALLA FINE HO CAPITO CHE DOVEVO MODIFICARE ANCHE IL FILE .PHP E FUNZIONA... ora una cosa vorrei fare ancora, a far scrivere obbligatoriamente ttt i dati.... cm si fa?
Davide-Al non in linea   Rispondi citando
Vecchio 30-01-08, 03:49   #13 (permalink)
 
L'avatar di Davide-Al
 
Data di registrazione: Nov 2007
Messaggi: 201
Incredibile!!!!! :-)

SONO RIUSCITO ANCHE A RENDERE OBBLIGATORIO TUTTI I CAMPI..... VI RINGRAZIO ANCORA TUTTI, PERCHE' SENZA DI VOI NN CE LA POTEVO MAI FARE... GRAZIE DAVVERO!
Davide-Al non in linea   Rispondi citando
Vecchio 30-01-08, 11:02   #14 (permalink)
Esperta
 
L'avatar di pikadilly
 
Data di registrazione: Dec 2006
Ubicazione: Old City
Messaggi: 6,290
Invia un messaggio tramite ICQ a pikadilly
Bene,
in ogni caso nei thread utili c'era anche lo script su come fare una form mail con campi obbligatori.

http://www.giorgiotave.it/forum/php-mysql/58050-esempio-form-per-invio-mail-con-controllo.html
pikadilly non in linea   Rispondi citando
Vecchio 30-01-08, 18:07   #15 (permalink)
 
L'avatar di Davide-Al
 
Data di registrazione: Nov 2007
Messaggi: 201
Form - Autenticazione

Grazie Pikaciu! adesso però, avrei un'altro problemino............. , siccome sono un webmaster in via di estinzione, che nn conoscono in dettaglio la programmazione......... mi aiuteresti a creare una pagina dove un utente ci si può iscrivere avere subito una risposta via e-mail du benvenuto.. e se conosci qualcs di più professionale e carino possibile?

Grazie di cuore.
Davide smack
Davide-Al non in linea   Rispondi citando
Rispondi


Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 12:56.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.