• User Attivo

    Elabora form

    allora , nel mio sito ho il seguente form
    [html]
    <<form NAME="mioform" ACTION="elabora_form.php" METHOD="POST" onsubmit="Modulo()">
    <center>
    <table BORDER="0" CELLSPACING="0"
    CELLPADDING="1">
    <tr valign="top">
    <td bgcolor="CCCCCC"> <font SIZE="1" face="Verdana">Titolo sito</font></td>
    <td bgcolor="CCCCCC" align="right"><font SIZE="1" face="Verdana"><input NAME="nome" TYPE="Text" SIZE="30" MAXLENGTH="20"><br><script>displaylimit("document.mioform.nome",20)</script> </td>
    </tr>
    <tr valign="top">
    <td bgcolor="CCCCCC"> <font SIZE="1" face="Verdana">Url:</font></td>
    <td bgcolor="CCCCCC" align="right"><font SIZE="1" face="Verdana"><input NAME="url" TYPE="Text" SIZE="30" MAXLENGTH="50"><br><script>displaylimit("document.mioform.url",50)</script> </td>
    </tr>
    <tr valign="top">
    <td bgcolor="CCCCCC"> <font SIZE="1" face="Verdana">Indirizzo mail:</font></td>
    <td bgcolor="CCCCCC" align="right"><font SIZE="1" face="Verdana"><input NAME="indirizzo" TYPE="Text" SIZE="30"
    MAXLENGTH="50"><br> </td>
    </tr>
    <tr valign="top">
    <td bgcolor="CCCCCC"> <font SIZE="1" face="Verdana">Comunicazioni:<br> Varie e eventuali</font></td>
    <td bgcolor="CCCCCC" align="right"><font SIZE="1" face="Verdana"><input NAME="note" TYPE="Text" SIZE="30"
    MAXLENGTH="100"><br><script>displaylimit("document.mioform.note",100)</script> </td>
    </tr>
    </table>
    </center>
    <center>
    <table BORDER="1" CELLSPACING="1" CELLPADDING="1">
    <tr valign="top">
    <td align=right><font SIZE="1" face="Verdana"><input NAME="submitbut" TYPE="submit" VALUE=" Invia "><input type="reset" value="Cancella"></td></tr>
    <tr>
    </table>
    [/html]

    nell'elabora form, vorrei mettere un controllo dei campi per i primi tre (per l'email anche con il controllo di una mail valida) e ovviamente il buon fine se tutto è stato compilato. Ho trovato questo codice ```
    [<?

    controllo campi compilati

    if (( $nome == "" ) || ( $indirizzo == "" ) || ( $email == "" )) {
    echo "<h3>Errore!</h3><br>Deve compilare tutti i campi dal form per continuare<br>
    La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>. Grazie";
    exit;
    }

    controllo campo email - email valida

    if (!ereg("@",$email)){
    echo "<h3>Errore!</h3><br>Deve inserire una email valida<br>
    La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>. Grazie";
    exit;
    } # inizio elaborazione dei dati
    ?>

    che mi lascia un dubbio, e se tutto è stato compilato, si passa direttamente a questo
    <?php
    $colore_sfondo="#82C0FF";
    $colore_testo="#FFFF80";
    $font="verdana";
    $font_size=2;
    $intestazioni = "MIME-Version: 1.0\r\n";
    $intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
    //intestazioni per il mittente
    $intestazioni .= "From: miosito[email protected]\r\n";
    $messaggio="Questa email ti è stata inviata dal sito.<br> L'utente $_POST[nome] (a cui puoi rispondere a: $_POST[indirizzo], ti ha contattato per $_POST.<br>Ti ha scritto: $_POST[note]</font>";
    $messaggio.="</body></html>";
    mail("[EMAIL="[email protected]"]miamail[/EMAIL]", "Invio email da: $_POST[nome]", $messaggio,$intestazioni);
    ?>


  • User Attivo

    ah, dimenticavo, come inserisco il messaggio che tutto è andato a buon fine e si può proseguire ?
    thank you


  • Super User
    • while**(list($key,$value)** = each($_POST**)****)**
    • {
    •  $$key = $value;
      
    • **}
      **

  • Super User

    Ciao supercapocc e benvenuto nel forum GT,
    prova così:
    [php]while(list($key,$value) = each($_POST))
    {
    $$key = $value;
    }
    $validaemail=ereg("^[^@][email protected][^@]+[^@.]+$",$indirizzo);
    if(!$validaemail OR empty($nome) OR empty($url)){
    echo "<h3>Errore!</h3><br>Deve compilare tutti i campi del form ed inserire un indirizzo email valido per continuare<br>
    La preghiamo di <A HREF="javascript:history.go(-1)">tornare indietro e correggere</A>. Grazie";
    exit;}else{
    $intestazioni = "MIME-Version: 1.0\r\n";
    $intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
    //intestazioni per il mittente
    $intestazioni .= "From: miosito[email protected]\r\n";
    $messaggio="Questa email ti è stata inviata dal sito.<br> L'utente $nome (a cui puoi rispondere a: $indirizzo, ti ha contattato per $url.<br>Ti ha scritto: $note</font>";
    $messaggio.="</body></html>";
    $inviomail=mail("miamail", "Invio email da: $nome", $messaggio,$intestazioni);
    if($inviomail){
    echo "L ' invio del messaggio è andato a buon fine";
    }else{
    echo "Errore nell ' invio del messaggio";
    }
    }

    }
    [/php]In caso di problemi scrivi qui,ciao! 😉


  • User Attivo

    ok, ora provo, eventualmente se volessi che i messaggi di errore comparissero nella stessa pagina del form,ognuno sotto il proprio campo errato quale sarebbe la procedura?


  • Super User

    @supercapocc said:

    ok, ora provo, eventualmente se volessi che i messaggi di errore comparissero nella stessa pagina del form,ognuno sotto il proprio campo errato quale sarebbe la procedura?
    per quello ci vuole Ajax o javascript 😉


  • User Attivo

    ok, allora ho provato il codice, è mi da questo errore Parse error: syntax error, unexpected '}'


  • User Attivo

    va beh....intuisco che c'era una parentesi di troppo.
    ora non riconosce la variabile tutto ok. è sempre errato per lui.


  • Super User

    @supercapocc said:

    va beh....intuisco che c'era una parentesi di troppo.
    ora non riconosce la variabile tutto ok. è sempre errato per lui.
    Ciao.
    Sì,c'era una parentesi di troppo 😄
    Non ho capito cosa intendi per "non riconosce la variabile tutto ok".
    Potresti spiegarti meglio? 🙂
    Grazie.


  • User Attivo

    si certo, allora anche se metto tutti i dati e una mail giusta, mi da sempre errore tornare indietro.


  • Super User

    Prova a sostituire: [php]^[^@][email protected][^@]+[^@.]+$[/php] con [php]^[^@ ][email protected][^@ ]+.[^@ .]+$[/php] 😉


  • Super User

    prova a sostituire:

    ^[^@][email protected][^@]+[^@.]+$

    con:

    ^[^@ ][email protected][^@ ]+.[^@ .]+$

    😉

    ciao!


  • User Attivo

    ok grazie, ora funziona perfettamente :vaiii:
    per migliorare la grafica dei messaggi ? tipo inserire immagini e altro. ci ho provato qui [PHP]echo "L' invio del messaggio è andato a buon fine[/PHP]
    ma pare che gli diano fastidio le virgolette "
    abbi pazienza ma è il mio primo approccio al php (linguaggio interessantissimo :mmm: )


  • Super User

    Per le virgolette,metti un \ davanti.
    Esempio:

    <img src=\"immagine.gif\">
    ``` ;)
    ciao!