Torna indietro   AlterVista | Spazio web gratis, hosting free php mysql > Supporto > PHP, MySql e file database

Rispondi
 
LinkBack Strumenti discussione Modalità visualizzazione
  #1 (permalink)  
Vecchio 05-11-2009, 00.07.22
Neofita
 
Data registrazione: 14-12-2006
Messaggi: 25
Predefinito Form Mail (problemi con la ricezione)

Rieccomi alla carica per un altro "problemino" a me ignoto.

Dopo 'enne' tentativi di riuscire ad inserire un Form-Mail nelle mie paginette senza riuscirvi, poiché non me ne funzionava neppure uno seppur ricopiando minuziosamente il codice già scritto ... Finalmente ne ho beccato uno (forse scritto per gli "ignoranti" come me) che funziona, ma... seppur, ripeto, funziona tutto, mi avvisa se non scrivo nei campi, mi avvisa se non può spedire la Mail e mi avvisa se la Mail l'ha spedita (e la spedisce pure dove gli ho detto io ... fantastico) quello che non capisco è perchè:
1°) la Mail ricevuta ha come mittente "Apache"
2°) Si legge quello che viene scritto nella textarea ma non vengono riportati in alcun luogo i campi con il "nome" e con la "Mail del mittente"

Forse dovrei variare qualcosa ?
...se vi posto il codice magari è meglio, eh ?

...Questo è il pezzo di codice PHP ad inizio pagina:

Codice PHP:
<?php
//raccogliamo le variabili inviate
$nome=$_POST['nome'];
$email=$_POST['email'];
$messaggio=$_POST['messaggio'];
$Submit=$_POST['Submit'];
//controlliamo che sia stato inviato il form
if($Submit=='Invia!'){
//controlliamo che siano stati inseriti tutti i dati
if(!empty($nome) and !empty($email) and !empty($messaggio)){
//inviamo l'email
$mail=mail("popoworld@altervista.org""Messaggio dalla Guida"$messaggio);
//controlliamo che la mail sia stata inviata correttamente
if($mail){
//messaggio in caso di successo
$ok="Email inviata!<br /><br />";
}
else{
//messaggio in caso di errore
$errore="<b>Non è stato possibile inviare l'email, riprova.</b><br /><br />";
}
}
else{
//messaggio in caso di campi mancanti
$errore="<b>Tutti i campi sono obbligatori!</b><br /><br />";
}
}
?>
...Questa è la stringa in PHP inserita subito prima del FORM :

Codice PHP:
<?php if(isset($errore)){ echo $errore; }else{ if(isset($ok)){ echo $ok; } } ?>
...E questa, finalmente, è la struttura del FORM :

Codice HTML:
<form name="mailform" method="post" action="<? $_SERVER['PHP_SELF'] ?>">
<table class="mess" summary = "text">
<tr> <td rowspan="4"> <textarea name="messaggio" cols="30" rows="6">Inserisci il tuo messaggio qui..</textarea> </td>
<td> Nome </td> </tr>
<tr> <td> <input class="mess" type="text" name="nome" /> </td> </tr>
<tr> <td> Email </td> </tr>
<tr> <td> <input class="mess" type="text" name="email" /> </td> </tr>
<tr> 
<td> <input type="reset" name="Submit2" value="Cancella" /> </td>
<td> <input type="submit" name="Submit" value="Invia!" /> </td> 
</tr>
</table>
</form>
Grazie mille a chi avrà la pazienza di sbattersi per risolvere i problemi altrui.
Rispondi citando
  #2 (permalink)  
Vecchio 05-11-2009, 11.23.29
L'avatar di andreafallico
Utente attivo
 
Data registrazione: 02-06-2009
Messaggi: 341
Predefinito

Per aggiungere l'email del mittente e altri campi(additional headers) puoi leggere qui: Mail e qui: E-mail......
Rispondi citando
  #3 (permalink)  
Vecchio 05-11-2009, 18.35.10
Neofita
 
Data registrazione: 14-12-2006
Messaggi: 25
Predefinito

Cioè, mica ho capito tanto bene...

per leggere il nome del mittente io dovrei aggiungere al codice PHP questa stringa:
Codice PHP:
$header .= "From: Inviante <inviante@dominio.org>\n"
...Ma io mica conosco l'indirizzo di posta di chi mi dovrebbe spedire la Mail...

...Comunque nel FORM creato i campetti ci sono tutti e due: quello della Mail e quello del Nome ... solo non capisco perchè non mi appaiono nella Mail che mi arriva.
Rispondi citando
  #4 (permalink)  
Vecchio 05-11-2009, 18.41.46
L'avatar di andreafallico
Utente attivo
 
Data registrazione: 02-06-2009
Messaggi: 341
Predefinito

Devi scrivere così:
Codice PHP:
$header .= "From: ".$nome." <".$email.">\r\n";
$mail=mail("popoworld@altervista.org""Messaggio dalla Guida"$messaggio$header); 

Ultima modifica di andreafallico : 05-11-2009 alle ore 18.51.34
Rispondi citando
  #5 (permalink)  
Vecchio 05-11-2009, 19.07.45
Neofita
 
Data registrazione: 14-12-2006
Messaggi: 25
Predefinito

Citazione:
Originalmente inviato da andreafallico Visualizza messaggio
Devi scrivere così:
Codice PHP:
$header .= "From: ".$nome." <".$email.">\r\n";
$mail=mail("popoworld@altervista.org""Messaggio dalla Guida"$messaggio$header); 
Uhuhhh... "forse ci siamo" : ora come mittenete mi appare il nome che viene inserito nel campo NOME e, tra parentesi, se ci passo sopra col mouse, mi appare l'indirizzo di posta che viene scritto nel campo MAIL ...
In teoria, volessi fare il contrario, dovrei sostituire la stringa che hai scritto tu con questa:
Codice PHP:
$header .= "From: ".$email." <".$nome.">\r\n"
giusto ?
Rispondi citando
  #6 (permalink)  
Vecchio 05-11-2009, 19.17.46
L'avatar di andreafallico
Utente attivo
 
Data registrazione: 02-06-2009
Messaggi: 341
Predefinito

Non saprei, perchè ci sono delle specifiche(RFC 2822, RFC...) da rispettare leggi qui: mail.
Comunque tu prova lo stesso.
Rispondi citando
  #7 (permalink)  
Vecchio 05-11-2009, 20.08.15
Neofita
 
Data registrazione: 14-12-2006
Messaggi: 25
Predefinito

Oookey, ci proverò... in ogni caso va benissimo anche così, eh (sono uno che si accontenta) ... Grazie mille per l'aiuto.
Rispondi citando
Rispondi

Strumenti discussione
Modalità visualizzazione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks are Attivato
Pingbacks are Attivato
Refbacks are Disattivato



Tutti gli orari sono GMT +1. Adesso sono le 21.32.47.