- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Tutorial] Gestione di un form mail semplice
-
CIAO
ho provato ha modificare sia il codice html che quello php, riesco a far partire correttamente la mail che pero arriva tutta erra ossia non rispetta il semplice output che vorrei ricevere ma in realta arriva una mail lunghissima con tutti i dati a casaccio a aprte la prima riga della tabella
potete dare un occhio a dove ho sbagliato qualcosa?:bho::bho:[html]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>modulo2</title></head>
<body>
<div style="text-align: center;">
<form action="invio2.php" method="post" id="modulo2">
<div style="text-align: center;"></div>
<table style="text-align: left; margin-left: auto; margin-right: auto; height: 254px; width: 811px;">
<tbody>
<tr>
<td style="font-family: Arial; font-weight: bold; width: 162px;">nome
della squadra</td>
<td colspan="3" rowspan="1" style="width: 206px;"><label> <input name="mail" id="squadra"> </label></td>
</tr>
<tr>
<td style="width: 206px;" colspan="1" rowspan="1"></td>
<td style="text-align: center; font-family: Arial; font-weight: bold;" colspan="1">vende</td>
<td style="text-align: center; font-family: Arial; font-weight: bold;" colspan="1">offre</td>
<td style="text-align: center; font-family: Arial; font-weight: bold;">prezzo</td>
</tr>
<tr>
<td style="font-family: Arial; width: 162px; text-align: right;">portiere</td>
<td style="width: 200px; text-align: center;"><label>
<input name="portiere" id="portiere" type="text"> </label></td>
<td style="width: 200px; text-align: center;"><label>
<input name="portiere1" id="portiere1"> </label></td>
<td style="width: 206px; text-align: center;"><label>
<input name="prezzopo" id="prezzopo"> </label></td>
</tr>
<tr>
<td style="font-family: Arial; width: 162px; text-align: right;">1
difensore</td>
<td style="width: 200px; text-align: center;"><label>
<input name="gioca02" id="gioca02">
</label></td>
<td style="width: 200px; text-align: center;"><label>
<input name="gioca02n" id="gioca02n"> </label></td>
<td style="width: 206px; text-align: center;"><label>
<input name="pgioca02" id="gioca02"> </label></td>
</tr>
<tr>
<td style="font-family: Arial; width: 162px; text-align: right;">2
difensore</td>
<td style="width: 200px; text-align: center;"><label>
<input name="gioca03" id="gioca03" type="text">
</label></td>
<td style="width: 200px; text-align: center;"><label>
<input name="gioca03n" id="gioca03n"> </label></td>
<td style="width: 206px; text-align: center;"><label>
<input name="pgioca03" id="pgioca03"> </label></td>
</tr>
<tr>
<td style="font-family: Arial; width: 162px; text-align: right;">1
c.campista</td>
<td style="width: 200px; text-align: center;"><label>
<input name="gioca04" id="gioca04" type="text">
</label></td>
<td style="width: 200px; text-align: center;"><label>
<input name="gioca04n" id="gioca04n"> </label></td>
<td style="width: 206px; text-align: center;"><label>
<input name="pgioca04" id="pgioca04"> </label></td>
</tr>
<tr>
<td style="font-family: Arial; width: 162px; text-align: right;">2
c.campista</td>
<td style="width: 200px; text-align: center;"><label>
<input name="gioca05" id="gioca05" type="text">
</label></td>
<td style="width: 200px; text-align: center;"><label>
<input name="gioca05n" id="gioca05n"> </label></td>
<td style="width: 206px; text-align: center;"><label>
<input name="pgioca05" id="pgioca05"> </label></td>
</tr>
<tr>
<td style="font-family: Arial; width: 162px; text-align: right;">attaccante</td>
<td style="width: 200px; text-align: center;"><label>
<input name="gioca06" id="gioca06">
</label></td>
<td style="width: 200px; text-align: center;"><label>
<input name="gioca06n" id="gioca06n"> </label></td>
<td style="width: 206px; text-align: center;"><label>
<input name="pgioca06" id="pgioca06"> </label></td>
</tr>
<tr>
<td style="width: 162px;"><label></label>
</td>
<td style="width: 200px;"><label><input name="submit" id="submit" value="Invia" type="submit"> <input name="cancella" id="cancella" value="Ripristina" type="reset">
</label></td>
<td style="width: 200px;"></td>
<td style="width: 206px;"></td>
</tr>
</tbody>
</table>
</form>
</div>
</body>
</html>
[/html][php]<?php
if (trim($_POST['mail']) != "") {
// indirizzo di chi riceve la mail è sottolineato ma nel codice non sottilineatelo
$to = " \n INDIRIZZO DI POSTA ";
$headers = "From: " . $_POST['mail'] . "\n";
// soggetto della mail
$subject = " mercato ";// 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 .= " portiere " . trim(stripslashes($_POST["portiere"])) . " portiere 1" . trim(stripslashes($_POST["portiere1"])) ." prezzo " . trim(stripslashes($_POST["prezzopo"])) ."\n"; //oggetto del messaggio
$body .= " difensore " . trim(stripslashes($_POST["gioca02"])) . $body .= " difensore 1 " . trim(stripslashes($_POST["gioca02n"])) .$body .= " prezzo " . trim(stripslashes($_POST["pgioca02"])) . "\n"; //oggetto del messaggio
$body .= " difensore " . trim(stripslashes($_POST["gioca03"])) . $body .= " difensore 1 " . trim(stripslashes($_POST["gioca03n"])) .$body .= " prezzo " . trim(stripslashes($_POST["pgioca03"])) . "\n"; //oggetto del messaggio
$body .= " c.campista " . trim(stripslashes($_POST["gioca04"])) . $body .= " c.campista" . trim(stripslashes($_POST["gioca04n"])) .$body .= " prezzo " . trim(stripslashes($_POST["pgioca04"])) . "\n"; //oggetto del messaggio
$body .= " c.campista " . trim(stripslashes($_POST["gioca05"])) . $body .= " c.campista" . trim(stripslashes($_POST["gioca05n"])) .$body .= " prezzo " . trim(stripslashes($_POST["pgioca05"])) . "\n"; //oggetto del messaggio
$body .= " attaccante " . trim(stripslashes($_POST["gioca06"])) . $body .= " attaccante" . trim(stripslashes($_POST["gioca06n"])) .$body .= " prezzo " . trim(stripslashes($_POST["pgioca06"])) . "\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. Bene";
} else {// altrimenti
echo "Devi compilare la form prima di inviare.";}
?> [/php]
-
Ciao accio1985,
Non ho capito qual'è il problema che riscontri.
-
@Thedarkita said:
Ciao accio1985,
Non ho capito qual'è il problema che riscontri.
La mail parte correttamente ma arrivano in maniera molto csasuale molti piu dati ossia gtli stessi dati arrivano in una mail lunghissuma impaginata in maniera del tutto casuale.
A me basta riportare i dati cosi come nel form di inserimento.
-
Prova cosi:
[php]
<?php
if (trim($_POST['mail']) != "") {
// indirizzo di chi riceve la mail è sottolineato ma nel codice non sottilineatelo
$to = " \n INDIRIZZO DI POSTA ";
$headers = "From: " . $_POST['mail'] . "\n";
// soggetto della mail
$subject = " mercato ";// 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 .= " portiere " . trim(stripslashes($_POST["portiere"])) . " portiere 1" . trim(stripslashes($_POST["portiere1"])) ." prezzo " . trim(stripslashes($_POST["prezzopo"])) ."\n"; //oggetto del messaggio
$body .= " difensore " . trim(stripslashes($_POST["gioca02"]))." difensore 1 " . trim(stripslashes($_POST["gioca02n"]))." prezzo " . trim(stripslashes($_POST["pgioca02"])) . "\n"; //oggetto del messaggio
$body .= " difensore " . trim(stripslashes($_POST["gioca03"]))." difensore 1 " . trim(stripslashes($_POST["gioca03n"]))." prezzo " . trim(stripslashes($_POST["pgioca03"])) . "\n"; //oggetto del messaggio
$body .= " c.campista " . trim(stripslashes($_POST["gioca04"]))." c.campista" . trim(stripslashes($_POST["gioca04n"]))." prezzo " . trim(stripslashes($_POST["pgioca04"])) . "\n"; //oggetto del messaggio
$body .= " c.campista " . trim(stripslashes($_POST["gioca05"]))." c.campista" . trim(stripslashes($_POST["gioca05n"]))." prezzo " . trim(stripslashes($_POST["pgioca05"])) . "\n"; //oggetto del messaggio
$body .= " attaccante " . trim(stripslashes($_POST["gioca06"]))." attaccante" . trim(stripslashes($_POST["gioca06n"]))." prezzo " . trim(stripslashes($_POST["pgioca06"])) . "\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. Bene";
} else {// altrimenti
echo "Devi compilare la form prima di inviare.";}
?>
[/php]
-
Edit: tutto risolto, grazie per l'aiuto non ci sarei riuscito!
P.S. c'è un metodo per far apparire nella mail in grassetto i dati inseriti nei campi del form e lasciare testo normale quelli descrittivi?
-
Aggiungi agli header dell'email che è l'email è in formato html, e metti i tag html per farlo in grassetto.
-
Grazieeeeeeeeeeeeeeeeeeeeeeeeeee!!!!
-
Scusa ma non ho capito:
dovrei modificare il codice del file php? e come dovrei farlo?
Vorrei ricevere in grassetto il contenuto delle celle del modulo.
Grazie
-
Ciao,
questo form mi è stato utile, sul primo sito dove l'ho riprodotto funziona benissimo, poi ho provato a farne uno uguale identico in un'altro sito e improvvisamente non funziona più ho copiato e in collato il codice ho tenuto gli stessi nomi dei campi e tutto ho cambiato solo la mail solo che non funziona potete aiutarmi?
-
Ciao sbabe e benvenuto nel forum GT.
Certo che i nomi dei file siano giusti ed anche i percorsi?
Nel caso prova a postare il codice e vediamo dove potrebbe essere il problema.
-
Ok questa è la parte di html
[html]<form action="messaggio.php" method="post" id="modulo">
Il Suo indirizzo e-mail*<br />
<label>
<p> <input name="mail" type="text" id="mail" /><br /></p>
</label>Messaggio* <br />
<p><textarea name="body" cols="30" rows="5" id="body"></textarea> <br /></p>
<label>
<input type="submit" name="submit" id="submit" value="Invia" /> </label></form> [/html]
Mentre questa è la parte di php
[php]<?php
// indirizzo di chi riceve la mail è sottolineato ma nel codice non sottilineatelo
if ((trim($_POST['mail']) != "") && (trim($_POST['body']) != "")) { //questo fa si che se i campi "oggetto" e "messaggio" sono vuoti la form non invia nessuna mail
$to = "[email protected]";
$headers = "From: " . $_POST['mail'] . "\n";// corpo messaggio
$body = "Messaggio dal sito:\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 .= "testo: " . trim(stripslashes($_POST["body"])) . "\n"; //messaggio
// invio mail
mail($to, $subject, $body, $headers); // SE L'INOLTRO E' ANDATO A BUON FINE...echo "<center>La mail è stata inviata con successo. Grazie per averci contattato</center>";
} else {// altrimenti
echo "<center>Deve compilare la form prima di inviare.</center>";}
?>[/php]
Comunque penso di aver sbagliato qualcosa nel php solo che non capisco cos'è se potete aiutarmi mi fate un favore grazie.
-
Vedo che manca l'oggetto della mail, intanto modifica il file messaggio.php così:
[php]<?phpif ((trim($_POST['mail']) != "") && (trim($_POST['body']) != "")) {
$to = "[email protected]";
$headers = "From: " . $_POST['mail'] . "\r\n";
$subject = "Oggetto della mail";// corpo messaggio
$body = "Messaggio dal sito:\n\n";$body .= "Inviata da: " . trim(stripslashes($_POST["mail"])) . "\n";
$body .= "testo: " . trim(stripslashes($_POST["body"])) . "\n"; //messaggio
mail($to, $subject, $body, $headers);
echo "<center>La mail è stata inviata con successo. Grazie per averci contattato</center>";
} else {// altrimenti
echo "<center>Deve compilare la form prima di inviare.</center>";}
?> [/php]Dato che usi una casella alice ti consiglio di controllare la casella dalla webmail e controllare la cartella posta indesiderata, probabile che viene considerata spam e che non te la fa scaricare dal client.
-
L'oggetto non c'è perché non ho messo il campo oggetto va messo lo stesso?
-
Niente ho provato ad aggiungere il subject però quanndo clicco su invia mi viene fuori una pagina bianca non mi viene fuori il messaggio di errore
-
Dopo tre anni dall'apertura di questo post, sono qui a parlare di questo form contatti molto utile, perchè lo sto utilizzando sul mio sito.
Veniamo al problema: lo script va alla grande, ricevo le mail, ed ho aggiunto altri elementi a quelli presenti nello script (menu a tendina e checkbox) che funzionano.
Allora che vuoi? Direte voi
Volevo migliorarlo, aggiungendovi un redirect ad una pagina del sito, qualche secondo dopo aver visualizzato il messaggio di avvenuto inoltro dei dati. Preferibilmente questa pagina potrebbe essere sempre quella dei contatti, però con i dati azzerati.
Il problema è che non ne capisco molto di php...:?
Che ne pensate?
Chissà se ci sarà qualcuno che leggerà questo msg dopo così tanto tempo...
spero di si :).Cmq grazie a pickadilly e a tutti, siete fantastici
BluesMan
-
Credo di aver risolto.
Per chi avesse bisogno:è 1 redirect interno al sito che avviene dopo 3 secondi
ho inserito nell'<head> della pagina invio.php questa stringa:<meta http-equiv="refresh" content="3;URL=pagina.html" />
ciao a tutti.
BluesMan
-
@BluesMan said:
Credo di aver risolto.
Per chi avesse bisogno:è 1 redirect interno al sito che avviene dopo 3 secondi
ho inserito nell'<head> della pagina invio.php questa stringa:<meta http-equiv="refresh" content="3;URL=pagina.html" />
ciao a tutti.
BluesMan
Secondo me non ti conviene molto perchè se uno si addormenta mentre scrive sulla tastiera proprio all'ultimo textinput gli si ricarica la pagina e perde tutte le info...
-
Si in effetti, come metodo è 1 po drastico, però è sempre meglio della pagina di "messaggio inoltrato" statico, che ti costringe a tornare indietro manualmente.
Comunque, accetto qualsiasi seggerimento :D.
Hai qualche idea?Ciao
BluesMan
-
Ragazzi avrei bisogno di una mano!
Ho utilizzato lo script da voi proposto. La mail la invia, ma quando la ricevo tutti i campi sono vuoti (ovvero "")! Ho tolto l'if iniziale (farò dopo una validazione lato client) altrimenti mi andava subito nel ramo else. Secondo voi da cosa può dipendere?
-
Ciao! Io sto provando ad usare il form che c'è nella prima pagina di questo post e funziona tutto alla grande.
Vorrei solo sapere come faccio a far si che oltre all'indirizzo che ho messo nel campo "$to=", arrivi una mail anche all'indirizzo di chi si registra.
Ho provato a scrivere "$to= $mail;" ma non va...Mi potete aiutare?