Verifica form misto php e JS

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ho fatto un form molto semplice con alcuni controlli, sia php sia js. Il problema è che non vedo nessun errore al momento dell'inserimento della voce nel form. Ho utilizzato il plugin livevalidation ma non capisco dove sbaglio. Qualcuno saprebbe darmi una mano?
Qui il codice completo.
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--#include virtual="/riservato/_private/logon.inc"-->
<title>Biblionet - Registrazione</title>
<link href="css/reset.css" type="text/css" rel="stylesheet" />
<link href="css/Master.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="js/validation.js"></script>
<link href="css/validation.css" rel="stylesheet" type="text/css" />
<link href="css/formregistrazione.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/formregistrazione.js"></script>
</head>
<body>
<div id="contenitore">
  <div id="logo">    <img src="Images/logo nuovo biblio2tondo.jpg" width="974" height="200" alt="" /></div>
<?php
    include 'header3.php';
?>
        <div class="facebook">
   <a href='http://www.facebook.com/MrChip63' target=_blank><img src="Images/facebook.png" width="30" height="30" alt="Facebook" /></a></div>
        </div>
        <div id="contenuto" class="clearfix">
          <p style="margin-top: 2px;">&nbsp;</p>
          <img id="top" src="http://forum.mrwebmaster.it/images/top.png" alt="" />
    <div id="form_container">
        <h1><a>Modulo Registrazione Nuovo Utente</a></h1>
    <?php
        if(!isset($_GET['passkey'])){
            if(!isset($_POST['invia'])){ ?>
        <form id="form" class="appnitro"  method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
                    <div class="form_description">
            <h2>Modulo Registrazione Nuovo Utente</h2>
        </div>
            <ul >
                    <li id="li_1" >
        <label class="description" for="nome">Nome </label>
        <span>
            <input id="nome" name="nome" class="element text" maxlength="255" size="8" value=""/>
            <label>Nome</label>
            <script type="text/javascript">
            var campo = new LiveValidation(‘nome’, {validMessage:"OK!"});
            campo.add(Validate.Presence, {failureMessage:"Il campo deve essere compilato."});
            </script>
        </span>
        <span>
            <input id="cognome" name="cognome" class="element text" maxlength="255" size="14" value=""/>
            <label>Cognome</label>
            <script type="text/javascript">
            var campo = new LiveValidation(‘cognome’,{onlyOnBlur: true, validaMessage:"OK!"});
            campo.add(Validate.Presence, {failureMessage:"Il campo deve essere compilato."});
            </script>
        </span><p class="guidelines" id="guide_1"><small>Metti il tuo Nome e Cognome</small></p>
        </li>
        <li id="li_2" >
        <label class="description" for="età">Età </label>
        <div>
            <input id="età" name="età" class="element text medium" type="text" maxlength="255" value=""/>
        </div><p class="guidelines" id="guide_2"><small>Inserisci la tua età</small></p>
        <script type="text/javascript">
            var campo = new LiveValidation(‘età’, {onlyOnBlur: true, validaMessage:"OK!"});
            campo.add(Validate.Presence, {onlyOnBlur: true, failureMessage:"Il campo deve essere compilato."});
            campo.add(Validate.Numericality, {onlyOnBlur: true, notANumberMessage:"Puoi inserire solo numeri."});
            </script>
        </li>
        <li id="li_3" >
        <label class="description" for="interessi">Interessi e passioni </label>
        <div>
            <textarea id="interessi" name="interessi" class="element textarea medium" cols="" rows=""></textarea>
        </div><p class="guidelines" id="guide_3"><small>Aggiungi tutto quello che ti piace</small></p>
        </li>
        <li id="li_4" >
        <label class="description" for="username">Username </label>
        <div>
            <input id="username" name="username" class="element text medium" type="text" maxlength="255" value=""/>
            <script type="text/javascript">
            var Username = new LiveValidation(‘Username’, {onlyOnBlur: true, validaMessage:"OK!"});
            Username.add(Validate.Presence, {onlyOnBlur: true, failureMessage:"Il campo deve essere compilato."});
            Username.add(Validate.Lenght, {onlyOnBlur: true,  maximum: 12, tooLongMessage:"Puoi mettere un massimo di 12 caratteri"});
            Username.add(Validate.Lenght, {onlyOnBlur: true,  minimum: 4, tooShortMessage:"Puoi mettere un minimo di 4 caratteri"});
            </script>
        </div><p class="guidelines" id="guide_4"><small>Inserisci un nome di fantasia</small></p>
        </li>
        <li id="li_5" >
        <label class="description" for="password">Password </label>
        <div>
            <input id="password" name="password" class="element text medium" type="text" maxlength="255" value=""/>
        </div>
        </li>
        <li id="li_6" >
        <label class="description" for="password2">Reinserisci la Password </label>
        <div>
            <input id="password2" name="password2" class="element text medium" type="text" maxlength="255" value=""/>
        </div>
        </li>
        <li id="li_7" >
        <label class="description" for="email">Email </label>
        <div>
            <input id="email" name="email" class="element text medium" type="text" maxlength="255" value=""/>
            <script type="text/javascript">
            var campo = new LiveValidation(‘Email’, {onlyOnBlur: true, validaMessage:"OK!"});
            campo.add(Validate.Presence, {onlyOnBlur: true, failureMessage:"Il campo deve essere compilato."});
            campo.add(Validate.Email, {onlyOnBlur: true, failureMessage:"Devi inserire un indirizzo mail valido!"});
            campo.add(Validate.Lenght, {onlyOnBlur: true, minimum: 4, tooShortMessage:"Puoi mettere un minimo di 4 caratteri"});
            </script>
        </div>
        </li>

                    <li class="buttons">
                      <input id="rest" class="button_text" type="reset" name="reset" value="Reset" />
                <input id="registrazione" class="button_text" type="submit" name="submit" value="Registrazione" />
        </li>
            </ul>

        </form>

<?php    } else {
    //funzione per verificare che non sia alterato il testo md5 della password
    function ver_testo($testo,$min,$max){
        $pattern="/^[a-zA-Z0-9]{".$min.",".$max."}$/";//non prende direttamente il min e il max
        if(preg_match($pattern, $testo)){
            //testo ok
            return TRUE;
        }else{
            return FALSE;
        }
    }
    if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $nome = trim($_POST['nome']);
    $username = trim($_POST['username']);
    $cognome = trim($_POST['cognome']);
    $età = trim($_POST['età']);
    $password = trim($_POST['password']);
    $password2 = trim($_POST['password2']);
    $email = trim($_POST['email']);
    //preparo un messaggio a vuoto per gli errori
    $ok_ko="";
    if(!ver_testo($username,4,10))($ok_ko.="Username non corretto, deve essere compreso tra 4 e 10 caratteri<br />");
    if(!ver_testo($password,6,12))($ok_ko.="La password deve essere composta da 6 a 12 caratteri <br />");
    if(!ver_testo($password2,6,12)){$ok_ko.="La password di conferma non coincide con la prima <br />";}
    if($password != $password2){$ok_ko.="Le password non coincidono <br />";}
    if(!filter_var($email, FILTER_VALIDATE_EMAIL)){$ok_ko.="L'indirizzo email non è valido <br />";}
    if($età==""){$ok_ko.="Devi inserire la tua età <br />";};
    if($ok_ko==""){
        //se è rimasto vuoto non ci sono errori

        // creazione di un codice di conferma in MD5
        $codiceconferma = md5(uniqid(rand()));
        $username = mysql_real_escape_string((strtolower($username))); //salvo il nickname tutto in minuscolo onde evitare problemi.
        $email = mysql_real_escape_string(strtolower($email)); //metto in minuscolo la mail

        //Verifico che non ci sia un username uguale a quello inserito nel form
        $verificauseremail = mysql_query("SELECT id FROM biblionet nuova ok WHERE username='$username' OR email='$email'");

        if(mysql_num_rows($verificauseremail)>0){
            //avvisi e torni al form pulito
            echo "ATTENZIONE: Username o Email già esistenti, scegline un altro. <br />";
            echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
        }else{
            $nome = mysql_real_escape_string($nome);
            $cognome = mysql_real_escape_string($cognome);
            $età = mysql_real_escape_string($età);
            $username = mysql_real_escape_string($username);
            $email = mysql_real_escape_string($email);
            $password = mysql_real_escape_string($password);
            $inviautentitemp = "INSERT INTO biblionet_nuova_temp (codiceconferma, username, età, cognome, nome, password, email) VALUES ('$nome', '$cognome', '$età', '$codiceconferma', '$username', '$password', '$email')";
            if(mysql_query($inviautentitemp)){
                //se tutto è OK da qua preparo l'invio della mail di conferma per l'avvenuta registrazione.
                include_once('class.phpmailer.php');
                $mail = new PHPmailer();
                $mail->IsSMTP();
                $mail->isHTML(true);
                $mail->SMTPDebug = true;
                $mail->Host = "smtp.fastwebnet.it";
                $mail->Port = "25";
                $mail->SMTPAuth = true;
                $mail->Username = "[email protected]";
                $mail->Password = "*******";
                // Impostazioni invio mail al cliente
                $mail->Setfrom ("[email protected]","Biblionet");   //Inserire la mail dell'amministratore ed il nome del sito
                $mail->AddReplyTo("[email protected]","Amministratore");
                $mail->AddAddress ($email); //Mail che riceverà chi si iscrive
                $mail->AltBody = "Il tuo client di posta non è settato per la ricezione in HTML";
                $mail->Subject = "Conferma di registrazione al sito www.biblionetsanmaurizio.com";
                //poi prova a modificare il testo da inviare
                $testo="<p>Ecco il tuo codice di attivazione</p><br />";
                $testo.="<p>Clicca sul link per confermare la registrazione</p><br />";
                $testo.="<a href=\"http://siti/Biblionet%20Nuova%20OK/registrazione.php?passkey=$codiceconferma\">Clicca qui</a>";
                $mail->Body =$testo;

                if ($mail->Send()){
                    echo "Tra poco riceverai una mail con il codice di attivazione per confermare l'iscrizione";
                }else{
                    echo "Si è verificato un errore di trasmissione riprova più tardi";
                    // e dopo 3 secondi torno automaticamente al form ripulito
                    //echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
                    //i secondi di attesa possono essere aumentati o diminuiti
                }//chiudo if/else invio

            } else {
                echo "ERRORE di comnnesione, ti preghiamo di riprovare più tardi<br />";
                echo "<meta http-equiv='Refresh' content='300; URL=index2.php'>";
            }//chiudo if/else errore sul db
        }//chiudo if/else username-email duplicato
    }else{
        echo $ok_ko;
        echo "<meta http-equiv='Refresh' content='300; URL=index2.php'>";
    }
    }
    //chiudo if/else $ok_ko
    //poi tutti i echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
    //potresti eliminarli e metterne un unico qui
}
        } else {

            $passkey = htmlspecialchars($_GET['passkey']);
            $sqlrecuperauser = "SELECT * FROM biblionet_nuova_temp WHERE codiceconferma = '$passkey'";
            $risultatouser = mysql_query($sqlrecuperauser);
            if($risultatouser) {
                $contauser = mysql_num_rows($risultatouser);
                if($contauser == 1){
                    $rows = mysql_fetch_array($risultatouser);
                    $username = $rows['username'];
                    $email = $rows['email'];
                    $password = $rows ['password'];
                    $passwordcript = md5($password);
                    $sqlconfermauser = mysql_query("INSERT INTO biblionet nuova ok (nome, cognome, età, username, password, email) VALUES ('$nome', '$cognome', '$età', '$username', '$passwordcript', '$email')");
                    if ($sqlconfermauser) {
                        echo "Il tuo account è stato attivato con successo, da adesso potrai accedere alle pagine del sito inserendo i tuoi dati.";
                        $sqleliminadati = mysql_query("DELETE FROM biblionet_nuova_temp WHERE codiceconferma = '$passkey'");
                    } else {
                        echo "C'è stato un errore, se hai sbagliato qualcosa riprova, altrimenti segnalacelo. Lo correggeremo il prima possibile!";
                    }
                }
            }
        }
    ?>
    </div>
    <img id="bottom" src="http://forum.mrwebmaster.it/images/bottom.png" alt="" />
        </div>
        <div class="vuoto"></div>
          <div id="footer"><p>Copyright - Tutti i diritti sono riservati - E' vietata la riproduzione anche parziale</p></div>
</body>
</html>
 
lungetto il codice
non riesci ad individuare la parte che credi possa invalidare il javascript?
potresti in alternativa abilitare il debug di explorer (utile a volte)
 
Scusate l'assenza ma casa e lavoro sono incasinato. Vengo al dunque, il problema è che il form ha una valdiazione diretta, che teoricamente utilizzando questa sintassi
PHP:
<script type="text/javascript">
            var campo = new LiveValidation(‘Email’, {onlyOnBlur: true, validaMessage:"OK!"});
            campo.add(Validate.Presence, {onlyOnBlur: true, failureMessage:"Il campo deve essere compilato."});
            campo.add(Validate.Email, {onlyOnBlur: true, failureMessage:"Devi inserire un indirizzo mail valido!"});
            campo.add(Validate.Lenght, {onlyOnBlur: true, minimum: 4, tooShortMessage:"Puoi mettere un minimo di 4 caratteri"});
            </script>
mi permette di verificare immediatamente se i dati inseriti corrispondono alle mie condizioni, poi i dati vengono inviati al server che con php ricontrolla e risponde.
Purtroppo non ottengo alcun avviso in tempo reale. e naturalemnte non ottengo nulla nemmeno in php.
 

Discussioni simili