Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662

    Validazione form (rivisitato da me) ma non va!

    Ciao ragazzi, buongiorno.
    Stavolta mi sa che ho bisogno di un genio...
    Io ci sto provando da stamattina alle 8... seguo la logica, ma non va...

    Sono partito da questo tutorial per creare un mio codice perchè quello del tutorial genera degli alert in caso di errore, e poi una volta trovato il primo errore non caga gli altri.
    Io invece vorrei semplicemente che una volta eseguita la verifica tornasse alla pagina form e nell'URL comparissero gli errori in GET (si dice così?)... erempio:
    sito.da/?page=reg&errnome=1&errcognome... ecc

    In questo modo potrei creare delle condizioni in modo da aggiungere o togliere delle classi in css (per far diventare il bordino rosso sul campo errato ad esempio), e aggiungere del testo se errnome=1 (ad esempio)

    Posto il codice:

    Codice PHP:
    <?php
     
    class NewUser
    {
        public 
    $conn;
     
            public function 
    AddUser()
            {
                
    $this->ErrorReport();
            }
     
            protected function 
    DbConnect()
            {
                include 
    "db_config.php";
     
                
    $this->conn mysql_connect($host,$user,$password) OR die("Impossibile connettersi al database");
                
    mysql_select_db($db$this->conn);
            }
            
    // controllo su NOME
            
    protected function NomeCheck()
            {
                if(empty(
    $_POST['nome']))
                {
                    return 
    TRUE;
                }
                else
                {
                    return 
    FALSE;
                }
            }
            
    // controllo su COGNOME
            
    protected function CognomeCheck()
            {
                if(empty(
    $_POST['cognome']))
                {
                    return 
    TRUE;
                }
                else
                {
                    return 
    FALSE;
                }
            }
            
            
    // controllo esistenza USERNAME
            
    protected function UsernameExists()
            {
                
    $this->DbConnect();
                
    $sql "SELECT username FROM users WHERE username='$_POST[username]'";
                
    $res mysql_query($sql$this->conn);
                if(
    $row mysql_fetch_array($res))
                {
                    
    mysql_close($this->conn);
                    return 
    TRUE;
                }
                else
                {
                    
    mysql_close($this->conn);
                    return 
    FALSE;
                }
            }
            
            
    // controllo USERNAME
            
    protected function UsernameCheck()
            {
                if(
    $_POST[username] == "")
                { 
                    return 
    TRUE;
                }
                elseif(
    ereg("^[a-z0-9]{6,12}$",$_POST[username]))
                { 
                    if(
    $this->UsernameExists())
                    {
                        return 
    TRUE;
                    }
                    else{
                        return 
    FALSE;
                    }
                }
                else{
                    return 
    TRUE;
                }
            }
            
            
    // controllo uguaglianza PASSWORD
            
    protected function VerifyPassword()
            {
                if(
    $_POST['password'] == $_POST['password2'])
                {
                    return 
    TRUE;
                }
                else
                {
                    return 
    FALSE;
                }
            }
            
    // controllo PASSWORD
            
    protected function PasswordCheck()
            {
                if(
    $_POST[password] == "")
                { 
                    return 
    TRUE;
                }
                elseif(
    ereg("^[a-zA-Z0-9]{6,12}$",$_POST[password]))
                { 
                    if(!
    $this->VerifyPassword())
                    {
                        return 
    TRUE;
                    }
                    else{
                        return 
    FALSE;
                    }
                }
                else{
                    return 
    TRUE;
                }
            }
            
            
    // controllo esistenza EMAIL
            
    protected function EmailExists()
            {
                
    $this->DbConnect();
                
    $sql "SELECT * FROM users WHERE email='$_POST[email]'";
     
                
    $res mysql_query($sql$this->conn);
                if(
    $row mysql_fetch_array($res))
                {
                    
    mysql_close($this->conn);
                    return 
    TRUE;
                }
                else
                {
                    
    mysql_close($this->conn);
                    return 
    FALSE;
                }
            }
            
            
            
    // controllo EMAIL
            
    protected function EmailCheck()
            {
                if(
    $_POST[email] == "")
                { 
                    return 
    TRUE;
                }
                elseif(
    ereg("^[a-zA-Z0-9][_\.a-zA-Z0-9-]+@([a-zA-Z0-9][0-9A-Za-z-]+\.)+([A-Za-z]{2,4})",$_POST[email]))
                { 
                    if(
    $this->EmailExists())
                    {
                        return 
    TRUE;
                    }
                    
                    else{
                        return 
    FALSE;
                    }
                }
                else{
                    return 
    TRUE;
                }
            }
            


            public function 
    ErrorResult()
            {
                if(
    NomeCheck())
                {
                    
    $errnome="&errnome=1";
                }
                if(
    CognomeCheck())
                {
                    
    $errcognome="&errcognome=1";
                }
                if(
    UsernameCheck())
                {
                    
    $errusername="&errusername=1";
                }
                if(
    PasswordCheck())
                {
                    
    $errpassword="&errpassword=1";
                }
                if(
    EmailCheck())
                {
                    
    $erremail="&erremail=1";
                }
                
    header("Location: ../?page=reg" $errnome $errcognome $errusername $errpassword $erremail);
                die;
            }
            
            
            protected function 
    ErrorReport()
            {
                if(
    $this->NomeCheck() OR $this->CognomeCheck() OR $this->UsernameCheck() OR $this->PasswordCheck() OR $this->EmailCheck())
                {
                    
    $this->ErrorResult;
                }
                
                
    $this->InsertNewUser();
            }
            
            
     
    //genera stringa casuale da inviare per email per confermare l'account
            
    protected function GetKey()
            {
                
    $car "aAbBcCdDeEfFgGhHiIlLjJkKmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789";
                
    $dim 40;
                
    srand((double)microtime()*1000000);
                
    $string '' ;
     
                    for(
    $inc=0$inc<$dim$inc++)
                    {
                        
    $rand rand(0strlen($car)-1);
                        
    $scar substr($car$rand1);
                        
    $string $string $scar;
                    }
     
                return 
    $string;
            }



    // prepara l'email con il link per confermare l'account (!!!!!!!!!!!!! ATTENZIONE: MODIFICA L'URL)
            
    protected function SendUserMail($key)
            {
                
    $content "Benvenuto $_POST[username],\r\n";
                
    $content .= "per confermare la tua iscrizione devi cliccare sul seguente link:\r\n\r\n";
                
    $content .= "http://www.pixter.it/starfactory/reg/verify_user.php?key=" $key;
     
                
    mail($_POST['email'], "Iscrizione al sito..."$content"From: io<miomail@me.com>");
     
                return;
            }
     
     
     
     
    // cripta la password, inserisce i dati nel database (con account ancora da attivare), prepara il link per conferma e invia la mail
            
    protected function InsertNewUser()
            {
                
    $password md5($_POST['password']);
                
    $key_control $this->GetKey();
     
                
    $sql "INSERT INTO users (nome,cognome,username,password,email,key_control) VALUES ('$_POST[nome]','$_POST[cognome]','$_POST[username]','$password','$_POST[email]','$key_control')";
     
                
    $this->DbConnect();
     
                
    mysql_query($sql,$this->conn);
     
                
    mysql_close($this->conn);
     
                
    $this->SendUserMail($key_control);
            }
     
     
     
     
    // attivazione dell'account da link. Se il link è corretto passa ver a 1 e cancella key_control (la chiave casuale)
            
    public function VerifyUser()
            {
                
    $sql "SELECT id FROM users WHERE key_control='$_GET[key]'";
                
    $this->DbConnect();
                
    $res mysql_query($sql,$this->conn);
     
                if(
    $row mysql_fetch_array($res))
                {
                    
    $query "UPDATE users SET ver=1,key_control='0' WHERE id='$row[id]'";
                    
    mysql_query($query,$this->conn);
                    
    mysql_close($this->conn);
                    echo 
    "Il tuo account è ora attivato!";
                }
                else
                {
                    echo 
    "Impossibile verificare l'account!";
                }
            }
            

    }
    ?>
    Ma non riesco a capire dov'è l'errore...
    Alla fine dello script l'utente me lo registra comunque, anche se i campi sono tutti vuoti!
    E' come se la funzione ErrorReport() non me la filasse proprio..
    Dove sbaglio?
    Grazie per l'aiuto!
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  2. #2
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Risolto!

    Per i posteri (a chi potesse servire)...

    L'errore era nella funzione ErrorReport():

    $this->ErrorResult(); al posto di
    $this->ErrorResult;


    Mentre nella funzion ErrorResult():

    if($this->NomeCheck()) al posto di
    if(NomeCheck()) per ogni if

    -------------------------------
    Dai che piano piano sto riuscendo a capire come funzione sto php!
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  3. #3

    problema form

    <div id="newsletter_iscriviti">
    <h6>NEWSLETTER</h6>
    <? if(!isset($_GET['registered'])) { ?>
    <form id="form1" name="form1" method="post" action="/fe/pages/newsletter/send.php" >
    <fieldset>
    <legend>Newsletter</legend>
    <div>
    <label for="emailfield">inserisci la tua mail</label>
    <input name="emailfield" type="text" id="emailfield" size="15" />



    <div class="radioArea">
    <input name="Privacy" id="Privacy" type="checkbox" />
    <label for="Privacy">Privacy <span class="obbligatorio">*obbligatorio</span></label>

    <input name="rimuovi" id="rimuovi" type="checkbox" />
    <label for="rimuovi">Rimuovi</label>
    </div>

    <div class="inputDiv">
    <input type="submit" value="iscriviti &raquo;" />
    </div>
    </div>
    </fieldset>
    </form>
    <? } else {
    if($_GET['registered'] == "registered")
    echo "

    Grazie per esserti registrato alla nostra newsletter.</p>";

    if($_GET['registered'] == "unregistered")
    echo "

    La sua richiesta di eliminazione &egrave; stata registrata con successo.</p>";


    } ?>
    </div>

    Salve a tutti, sono nuova del forum...ho bisogno di validare il campo mail e rendere obbligatorio il checkbox privacy...help meeeeeeeee....
    grazieee

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.