- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema form
-
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!