• User

    form di contatto - non blocca invio

    Ciao a tutti.
    Mi rivolgo a questo forum perchè so che, come altre volte è successo, ho avuto soltanto qui la risoluzione ai miei problemi.
    In sostanza, l'invio del messaggio di contatto, in caso di dati mancanti (nominativo, email, testo), pur segnalando l'errore, non viene bloccato.
    Il blocco si attiva soltanto immettendo una email non valida.
    Probabilmente sarà un banale errore di sintassi ma ho provato di tutto e non riesco a venirne a capo.
    Ringrazio in anticipo chiunque vi vorrà dare una mano e aggiungo il codice del file save.php:

    <html>
    <head>
    <title>Modulo Conferma</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script type="text/javascript">
    <!--
    function doRedirect() { //funzione con il link alla pagina che si desidera raggiungere
    location.href = "../contatti.php";
    }
    window.setTimeout("doRedirect()", 10000); //Fa partire il redirect dopo tot. secondi
    //-->
    </script>

    </head>
    <body>

    <?php
    //recupero i dati e li inserisco in tre variabili di tipo stringa
    $nome=$_POST['nome'];
    $telefono=$_POST['telefono'];
    $messaggio=$_POST['messaggio'];
    $email=$_POST['email'];

    //ricavo l'ora e la data odierna
    $data_ora = date("d/m/Y H:i:s");

    //assegno ad una variabile il database di testo
    $db_testo="1database.txt";

    //Ora viene controllato che i dati inseriti
    //dall'utente siano corretti

    if($nome==""){

    echo "Il campo nominativo deve essere compilato<br>
    

    La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>. Grazie";

    }elseif($messaggio==""){

    echo "Il messaggio non è stato compilato<br>
    

    La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>. Grazie";

    }elseif($email==""){

    echo "Il campo email non è stato compilato<br>
    

    La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>. Grazie";

    }

    controllo campo email - email valida

    elseif((!isset($POST['email'])) || (!eregi("^([a-z0-9.-]+)(@[a-z0-9.-]+)(.{1}[a-z]{2,4})$", $_POST['email'])))
    {echo "<br>Deve inserire una email valida<br>
    La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>. Grazie";
    exit;

    }else{

    //se tutto è corretto procedo a scrivere le

    //informazioni sul database di testo

        $guestbook = fopen($db_testo, "a");
    

    // Header dell'email, per madnarla in formato html
    $headers .= "From:miosito.it<miosito.it>\r\n";
    $headers .= "Reply-To: [email protected]\r\n";
    $headers .= "Return-Path: [email protected]\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

        $txt='<tr><td><i>nome: </i><strong>'.$nome.'</strong><br />';
        $txt .= "<i>telefono: </i>".$telefono . "<br />";
        $txt .='<strong><a href="mailto:'.$email.'">'.$email.'</a></strong><br />';
        $txt .= "<i>messaggio: </i>".$messaggio . "<br />";
        $txt .= "<i>Messaggio scritto in data: " . $data_ora . "</i></td></tr><br /";
        fwrite($guestbook, $txt);
        fclose($guestbook);
    

    mail("[email protected]","messaggio dal sito ",$txt, $headers);
    mail("[email protected]","messaggio dal ns sito",$txt, $headers);
    }

    ?>
    <br>
    <br>
    <table width="500" >
    <tr>
    <td >

                <br>
             
                Il modulo che avete appena compilato <br>
                  &egrave; stato inviato con successo.<br>
                  <br>
                  Grazie<br>
                <br>
                State per essere reindirizzati ad altra pagina.
    

    <br>
    Se non siete reindirizzati entro 10 secondi <br>
    <br>
    <a href="../index.php">CLICCATE QUA</a><br>
    </td>
    </tr>
    </table>

    </body>
    </html>


  • ModSenior

    Ciao eisenblu,
    il codice postato mi sembra corretto, e a meno che non hai fatto qualche modifica al codice postandolo non dovrebbe esserci quel problema.
    Il fatto che immettendo un'email errata non faccia inviare l'email, con questo codice non mi sembra possibile, lo script ora come ora dovrebbe invece: mostrare il testo di email inviata correttamente, ma in realtà l'email non viene spedita.
    Per correggere l'errore del testo mostrato, nella maniera più veloce possibile, puoi fare cosi:

    [php]
    if($nome==""){

    echo "Il campo nominativo deve essere compilato<br>
    La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>. Grazie";
    exit;
    }elseif($messaggio==""){

    echo "Il messaggio non è stato compilato<br>
    La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>. Grazie";
    exit;
    }elseif($email==""){

    echo "Il campo email non è stato compilato<br>
    La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>. Grazie";
    exit;
    }
    [/php]


  • User

    lo sapevo di essere nel posto giusto!
    Ora funziona come dovrebbe
    Grazie Thedarkita, alla prossima