- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema form
-
Problema form
Ciao!
Ho creato nella pagina contatti di un nuovo sito il form per la richiesta info. Per testare il funzionamento ho inserito le mie mail invece di quelle del cliente. In fase di prova, dopo l'invio si apre la pagina di conferma ma le mail non arrivano.
Non riesco a capire dove sbaglio... il php è ancora per me un grande dilemma...
La pagina "incriminata" è carrara90.it/contatti.htmlelena
-
Ciao Elena sei sicura che non siano finite nella cartella di spam??
-
In effetti mi sono arrivate tutte insieme circa tre ore dopo la prova! Però... devo aver sbagliato qualcosa (e infatti sto smadonnando non poco) perchè il testo arrivato è solo:
Nome:
Email:
Messaggio:e in un caso è :
Nome: prova
Email: prova chiocciola prova.it
Messaggio: Messaggio di provaPHP questo sconosciuto... ma prima o poi ce la farò anche io!!!
-
Nome: vuota
Email: vuota
Messaggio: vuotaPotrebbe stare a significare che le variabili trasmesse dalla form non vengono valorizzate (potrebbero mancare $_POST, $_GET eccetera). Se posti lo script (form, script php e pagina di conferma) magari ci si da un occhio
-
Grazie per la comprensione!
Allora, il form:
<form method="post" action="contactengine.php">
<label for="Nome">Nome:</label>
<input type="text" name="Nome" id="Nome" />
<label for="Email">Email:</label>
<input type="text" name="Email" id="Email" />
<label for="Messaggio">Messaggio:</label>
<textarea name="Messaggio" rows="20" cols="20" id="Messaggio"></textarea>
<input type="submit" name="submit" value="invia" class="submit-button" />
</form>
Il file contactengine.php:
<?php
$EmailFrom = "mia mail";
$EmailTo = "mia mail";
$Subject = "Modulo inviato da sito CARRARA90";
$Nome = Trim(stripslashes($_POST['Nome']));
$Email = Trim(stripslashes($_POST['Email']));
$Messaggio = Trim(stripslashes($_POST['Messaggio']));// validation
$validationOK=true;
if (!$validationOK) {
print "<meta http-equiv="refresh" content="0;URL=error.htm">";
exit;
}// prepare email body text
$Body = "";
$Body .= "Nome: ";
$Body .= $Nome;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Messaggio: ";
$Body .= $Messaggio;
$Body .= "\n";// send email
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");// redirect to success page
if ($success){
print "<meta http-equiv="refresh" content="0;URL=contactthanks.php">";
}
else{
print "<meta http-equiv="refresh" content="0;URL=error.htm">";
}
?>
Il file di risposta mail.php (che non funziona in quanto mai arrivata):
<?php
$msg = "Sender's Full Name:\t$sender_name\y";
$msg .= "Sender's E-Mail:\t$sender_email\y";
$msg .= "Sender's Message:\t$sender_message\y";// use two newline characters at the end of your content,
// or to insert additional spacing$mailheaders = "From: My Web Site <carrara90> \n";
$mailheaders .= "Reply-To: $sender_email\n\n";mail("carrara90", "Contact Form", $msg, $mailheaders);
echo "<H1 align=center>Grazie, $sender_name</h1>";
echo "<p align=center>Vi contatteremo appena possibile.</p>";?>
La pagina di conferma viene visualizzata correttamente ad ogni invio.
Prego non inorridire!!!
Grazie ancora,
elena
-
Ok ci do un occhio. Appena finito ti rispondo editando questo post.
-
@websources said:
Ok ci do un occhio. Appena finito ti rispondo editando questo post.
-
Il ritardo dell'invio è dovuto alla funzione mail() e al server sul quale poggia il sito. Riguardo il testo vuoto, è evidentemente perché $Nome, $Email e $Messaggio sono vuoti o NULL al momento dell'aggiunta a $Body. Per debuggare un pò, leva i reindirizzamenti, metti tutto in var_dump() e controlla in quale punto le informazioni non procedono.
Se proprio non ne esci, trasforma tutto temporaneamente in GET e vedi se nell'URL vengono passate le 3 variabili senza problemi(PS. ho dato solo un'occhiata rapida. magari alla fine si scopre che è un punto e virgola mancante )
-
No è qualcosa di peggio.
Dopo 30 mai inviare correttamente dal mio sito al mio indirizzo di posta e con var_dump($seccess) che dava true ha comiciato a dare false e non sta mandando più nulla.
-
Premetto che ho "ereditato" questo sito creato da qualcun altro e abbandonato per rimetterlo in piedi. Il form era già presente nel vecchio sito, l'ho ricopiato paro paro nella nuova pagina contatti. Evidentemente non è mai stato testato dal creatore.
Ho provveduto a fare un bel reset ricominciando da capo e affidandomi alla buena suerte!
Grazie per la vostra disponibilità... e scusate per avervi fatto perdere tempo! (ora però vado a testare se quello nuovo che ho fatto funziona )elena
-
La mail di risposta dubito possa mai funzionare visto da nessuna parte viene incluso il file mail.php che dunque è come se non ci fosse.
Lo script contactengine.php l'ho riscritto così e adesso va. Come mittente nel client di posta visualizza la mail del mittente, il soggetto che hai impostato tu e nel corpo lo stesso soggetto, il nome del mittente e il suo messaggio.
Fammi sapere se serve altro.
$EmailTo = "tua_mail_destinatario";
$Subject = "Modulo inviato dal sito Carrara90";
$Nome = "Nome: " . trim( stripslashes( $_POST['Nome'] ) ) . "\n";
$From = trim( stripslashes( $_POST['Email'] ) );
$Messaggio = "Messaggio: " . stripslashes( $_POST['Messaggio'] );$Body = $Nome . $Messaggio;
$success = mail( $EmailTo, $Subject, $Body, "From: $From" );
if ( $success == true ) :
print "<meta http-equiv="refresh" content="0;URL=contactthanks.php">";
else:
print "<meta http-equiv="refresh" content="0;URL=error.htm">";
endif;Nel testo del messaggio meglio non levare gli spazi. Immagina se dovessi leggere un messaggio di questo tipo: "CiaomichiamoStefanoequestomessaggioèperottenereinformazionisuquesto,quello,su,giù,sotto,sopraperchèsonoiniteressatoatantebellissimecosechemipiacciono".
Che casino vero?
-
Grazie di tutto ragazzi!