- Home
- Categorie
- Coding e Sistemistica
- PHP
- problema controllo form mail
-
problema controllo form mail
ho uno strano problema con un form mail, funziona tutto correttamente, ma se il form non viene riempito come si deve e quindi viene generato un messaggio di errore, mi spariscono tutti i div a destra e sotto quello che contiene il php..
fate prima a vedere che io a spiegarvelo:
aprite il SITO e provate a mandare una mail vuota.. vedrete che cosa sparisce..
ora non capisco perchè succeda.. spero che qualcuno possa illuminarmi.
se servisse il php ( contenuto nel div del form ) è il seguente:
[php] <?php
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$email = $_POST['email'];
$messaggio = $_POST['messaggio'];
if (!ereg("@",$email)){
echo "<h2>Errore!</h2><br><br>Deve inserire una email valida<br><br>
La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>.<br><br> Grazie";
exit;
}controllo campi compilati
if (( $nome == "" ) || ( $cognome == "" ) || ( $smessaggio == "" ) || ( $email == "" )) {
echo "<h2>Errore!</h2><br><br>Deve compilare tutti i campi del form per continuare<br><br>
La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>.<br><br> Grazie";
exit;
}
setlocale(LC_TIME, 'it_IT');
strftime("%A %e %B %Y %R");
$todayis = strftime(" %A %e %B %Y , %R") ;
$subject = "E mail da sito TIS " ;
$messaggio = stripcslashes($messaggio);
$message = " $todayis
Info:
da: $cognome $nome
e mail: $email
Messaggio: $messaggio ";
$from = "Form: TIS\r\n";
mail("[email protected]", $subject, $message, $from);
?> [/php]
spero di essermi spiegata e grazie
-
Il problema credo siano le istruzioni exit dopo che visualizzi i messaggi di errore. Con exit lo script ti termina esattamente in quel punto, mentre probabilmente (per dirlo con certezza bisognerebbe vedere il codice completo di tutta la pagina) avrai dopo istruzioni include che servono a visualizzare la colonna destra e il footer e che in questo modo non vengono eseguiti.
Prova a cambiare il codice così
[php]
<?php
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$email = $_POST['email'];
$messaggio = $_POST['messaggio'];
if (!ereg("@",$email)){
echo "<h2>Errore!</h2><br><br>Deve inserire una email valida<br><br>
La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>.<br><br> Grazie";
} elseif (( $nome == "" ) || ( $cognome == "" ) || ( $messaggio == "" ) || ( $email == "" )) {
echo "<h2>Errore!</h2><br><br>Deve compilare tutti i campi del form per continuare<br><br>
La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>.<br><br> Grazie";
} else {
setlocale(LC_TIME, 'it_IT');
strftime("%A %e %B %Y %R");
$todayis = strftime(" %A %e %B %Y , %R") ;
$subject = "E mail da sito TIS " ;
$messaggio = stripcslashes($messaggio);
$message = " $todayis
Info:
da: $cognome $nome
e mail: $email
Messaggio: $messaggio ";
$from = "Form: TIS\r\n";
mail("[email protected]", $subject, $message, $from);
}
?>
[/php]Hai anche una variabile $smessaggio nel controllo invece di $messaggio
-
mitico funziona adesso, grazie infinite!
-
sig, ho esultato troppo presto..
come faccio a dirgli alla fine " se tutto è riempito per bene manda la mail e fai apparire unj link che mi riporta alla pagina prima?"
ho provato ad aggiungere una cosa al tuo codice, ma era una cretinata perchè all'apparenza funzionava tutto ma le mail partivano invece in ogni caso
ti posto l'aggiunta ( povera me )
[php]<?php
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$email = $_POST['email'];
$messaggio = $_POST['messaggio'];
if (!ereg("@",$email)){
echo "<h2>Errore!</h2><br><br>Deve inserire una email valida<br><br>
La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>.<br><br> Grazie";
} elseif (( $nome == "" ) || ( $cognome == "" ) || ( $messaggio == "" ) || ( $email == "" )) {
echo "<h2>Errore!</h2><br><br>Deve compilare tutti i campi del form per continuare<br><br>
La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>.<br><br> Grazie";
} else echo "<p> <a href='contatti.html'>Invia un nuovo messaggio </a></p>";{
setlocale(LC_TIME, 'it_IT');
strftime("%A %e %B %Y %R");
$todayis = strftime(" %A %e %B %Y , %R") ;
$subject = "E mail da sito TIS " ;
$messaggio = stripcslashes($messaggio);
$message = " $todayis
Info:
da: $cognome $nome
e mail: $email
Messaggio: $messaggio ";
$from = "Form: TIS\r\n";
mail("[email protected]", $subject, $message, $from);
}
?>[/php]per una volta che pensavo di averci azzeccato
-
va bene va bene.. non darò la colpa all'orario.. sono prprio scema.. se magari l'echo lo metto al posto giusto..
ho risolto grazie[php]else {
setlocale(LC_TIME, 'it_IT');
strftime("%A %e %B %Y %R");
$todayis = strftime(" %A %e %B %Y , %R") ;
$subject = "E mail da sito TIS " ;
$messaggio = stripcslashes($messaggio);
$message = " $todayis
Info:
da: $cognome $nome
e mail: $email
Messaggio: $messaggio ";
$from = "Form: TIS\r\n";
mail("[email protected]", $subject, $message, $from);
echo "<p> <a href='contatti.html'>Invia un nuovo messaggio </a></p>";
}[/php]
-
echo va messo dopo la parentesi graffa di apertura di else.
[php]
<?php
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$email = $_POST['email'];
$messaggio = $_POST['messaggio'];
if (!ereg("@",$email)){
echo "<h2>Errore!</h2><br><br>Deve inserire una email valida<br><br>
La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>.<br><br> Grazie";
} elseif (( $nome == "" ) || ( $cognome == "" ) || ( $messaggio == "" ) || ( $email == "" )) {
echo "<h2>Errore!</h2><br><br>Deve compilare tutti i campi del form per continuare<br><br>
La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>.<br><br> Grazie";
} else {
echo "<p> <a href='contatti.html'>Invia un nuovo messaggio </a></p>";
setlocale(LC_TIME, 'it_IT');
strftime("%A %e %B %Y %R");
$todayis = strftime(" %A %e %B %Y , %R") ;
$subject = "E mail da sito TIS " ;
$messaggio = stripcslashes($messaggio);
$message = " $todayis
Info:
da: $cognome $nome
e mail: $email
Messaggio: $messaggio ";
$from = "Form: TIS\r\n";
mail("[email protected]", $subject, $message, $from);
}
?>
[/php]
EDIT: postato prima di accorgermi che avevi risolto
-
grazie lo stesso