• User Attivo

    così al volo vedo questo:

    if ( ($nome == "") || ($cognome == "") || ($email == ""))

    quando hai tutti i campi pieni questo è vero quindi salta l'elseif del controllo email.

    invece di un elseif, metti un if all'interno.

    if nome cognome email != "" {
    ---if email è valida {
    -----echo 'bravo';
    ---}
    else
    ---echo 'riempi tutti i campi'
    }

    naturalmente questa è solo l'idea, non è il codice giusto 😄


  • User

    No, se i campi sono vuoti mette $errore a true e non passa all'elseif, se invece tutti e tre i campi sono pieni l'elseif dovrebbe farlo, ma non lo fa!

    Cmq grazie per evrmi fatto notare che se per esempio email e cognome sono pieni e nome è vuoto il controllo cmq non lo fa,anche se sarebbe inutile dato che lo rimando al form di inserimento.

    Cmq il mio problema rimane.Grazie lo stesso


  • User Attivo

    hai controllato la correttezza del pattern? non arriva al elseif o non passa il controllo ereg ?

    poi spezzeri + il codice (solo x chiarezza)

    if ( ($nome == "") || ($cognome == "") || ($email == "")) {
    #se solo uno dei campi è vuoto
    $errore=true;
    echo "
    Spiacente, devi compilare tutti i campi
    ";
    exit();
    }

    ed eviti il elseif evitando di annidare troppo il codice


  • User

    riky78 ha detto:

    hai controllato la correttezza del pattern? non arriva al elseif o non passa il controllo ereg ?

    Penso che sia l'ereg a non funzionare, non è che esiste un altra funzione in php che fa il confronto di due stringhe?

    Cmq le tre condizioni devono coesistere e frammentare il codice significherebbe avere if annidati, un bel casino, cmq quella oarte di codice funziona perchè se me tto la parte di controllo email come commento il programma gira.

    Quindi arriva all' elseif e si ferma all'ereg. Come posso fare?


  • User Attivo

    prova questa:

    		if (!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" , $var_mail))
    			return false;	
    		return true;	
    

  • User

    Niente da fare,probabilmente è perchè sono fuso dopo 8 ore di lavoro, adesso comunque vado a casa e ci provo finchè non ne vengo fuori, appena ce la faccio posto il risultato su questo 3d. Grazie


  • User

    Buongiorno,

    ho isolato il pezzo di codice in cui c'è il problema:

    <HTML>
    <BODY>
    <?php
    $errore=false;
    $pattern="^[^@ ]+@[^@ ]+.[^@ .]+$";
    if (!ereg($pattern,$email)) {
    echo "Questa "$email" non e un email valida";
    $errore=true;
    }else{
    echo "Ciao $nome $cognome

    ";
    echo "Questa e la tua email: $email
    ";
    }
    if ( $errore) {
    echo "
    Non hai compilato tutti i campi, devi tornare al <A HREF="convalidaForm.php">modulo</A> ";
    }
    ?>
    </BODY>
    </HTML>

    Se qualcuno potesse dargli un'occhiata...

    Secondo il mio parere da neofito di php l'errore sta o nel pattern (molto probabile dato che passa sempre il controllo dell'if come vero) o è la funzione "ereg()" che non funziona. Ah, il controllo l'ho preso da questa guida php http://www.giorgiotave.it/guida_php/controlli_form.php.

    Grazie


  • User Attivo

    se fai così ^(.)@(.).$

    però credo sia sbagliata perché il primo (.*) forse prende tutto, devi vedere come prendere tutto fino a che incontra @

    ora sono a lavoro e non posso controllare, comunque cerca su google le espressioni regolari per php


  • User

    Ho trovato l'errore grazie.

    L'errore era nel form, c'era un errore nel campo <form method=get action="modulo.php"> grazie ancora.


  • User Attivo

    @Nightmare said:

    se fai così ^(.)@(.).$

    però credo sia sbagliata perché il primo (.*) forse prende tutto, devi vedere come prendere tutto fino a che incontra @

    ora sono a lavoro e non posso controllare, comunque cerca su google le espressioni regolari per php

    si, hai ragione


  • User Attivo

    Scusate l'intrusione leggevo un po' le vostre interessanti discussioni e siccome sono anch'io un principiante vi mostro questa , l'ho fatta da solo e scusate se e' un po' rozza.
    <?php
    $errore=false;
    if(empty($_POST["nome"]) || empty($_POST["cognome"]) || empty($_POST["città"]) || empty($_POST["provincia"]) || empty($_POST["email"]) ||empty($_POST["accetto"])){
    $errore=true;
    echo "<center>Attenzione!!! Compila i campi obbligatori (*)</center><br>";
    echo "<center><a href="index.html"><em><u>Torna al Modulo</u></em></a></center><br>";
    }
    $pattern="^[^@ ]+@[^@ ]+.[^@ .]+$";
    if(!ereg($pattern,$email)){
    $errore=true;
    echo "<center>Questa E-Mail<b>"$email"</b> non è valida</center>";
    echo "<center><a href="index.html"><em><u>Torna al Modulo</u></em></a></center><br>";
    }
    if($errore){
    echo ""; <------l'ho lasciato vuoto perche' se c'e' l'errore riprende l'eco in verde
    }else{
    $a="[email protected]";
    $oggetto="Messaggio di adesione alla Newsletter";
    $informazioni="Hai ricevuto un messaggio da : $_POST[nome] - Cognome: $_POST[cognome] - Città: $_POST[città] - Provincia: $_POST[provincia] - Indirizzo E-Mail: $_POST[email] - Sito Web: $_POST[sito] - Descrizione: $_POST[descrizione] - Accettazione: $_POST[accetto]";
    mail($a, $oggetto, $informazioni);
    echo "<center>Ottimo $_POST[nome] la tua richiesta di adesione è stata inviata correttamente.<br>Benvenuto/a nel mondo di ......<br><a href="index.html"><em><u>Torna alla Home</u></em></a></center>";
    }
    ?>
    Funziona bene se potesse servire.....
    Ciao a tutti
    Marco