• User Attivo

    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


  • User

    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


  • User Attivo

    mitico 🙂 funziona adesso, grazie infinite!


  • User Attivo

    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 :arrabbiato:


  • User Attivo

    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]


  • User

    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 🙂


  • User Attivo

    grazie lo stesso 🙂