Form Registrazione con conferma via email - problema

Discussione in 'PHP' iniziata da Dylan VDj Canziani, 27 Marzo 2015.

Tag (etichette):
  1. Dylan VDj Canziani

    Dylan VDj Canziani Nuovo Utente

    Registrato:
    26 Marzo 2015
    Messaggi:
    11
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    buongiorno a tutti! ho creato seguendo i vari tutorial un modulo registrazione utenti con conferma via email! I dati vengono salvati su un DB mysql.

    Il problema è che quando arriva l'email per la verifica della registrazione, cliccando sul link dice sempre "impossibile verificare l'account" vi posto il codice magari qualcuno più esperto mi sa dare una dritta;

    PHP:
    <?php
     
    class NewUser
    {
        public 
    $conn;
     
            public function 
    AddUser()
            {
                
    $this->ErrorReport();
            }
     
            protected function 
    DbConnect()
            {
                include 
    "db_con.php";
     
                
    $this->conn mysql_connect('xxxxxx''xxxxx''xxxxxxxx') OR die("Impossibile connettersi al database");
                
    mysql_select_db($db$this->conn);
            }
     
            protected function 
    IsEmptyField()
            {
                if(empty(
    $_POST['nome']) OR empty($_POST['cognome']) OR empty($_POST['email']))
                {
                    return 
    TRUE;
                }
                else
                {
                    return 
    FALSE;
                }
            }
     
     
        
            protected function 
    nomeExists()
            {
                
    $this->DbConnect();
                
    $sql "SELECT nome FROM iscrizione WHERE nome='$_POST[nome]'";
                
    $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;
                }
            }
     
            protected function 
    EmailExists()
            {
                
    $this->DbConnect();
                
    $sql "SELECT email FROM iscrizione 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;
                }
            }
     
            protected function 
    VerifyEmail()
            {
                
    $pattern "^([a-zA-Z0-9])+([a-zA-Z0-9]+[-_\.]?)*([a-zA-Z0-9])+(@)([a-zA-Z0-9])+([a-zA-Z0-9]+[-_\.]?)*([a-zA-Z0-9])+(\.[a-z]{2,4})$";
     
                if(
    ereg($pattern,$_POST['email']))
                {
                    return 
    TRUE;
                }
                else
                {
                    return 
    FALSE;
                }
            }
     
            public function 
    ErrorResult($num)
            {
                
    header("Location: form.php?alert=" $num);
                die;
            }
     
            protected function 
    ErrorReport()
            {
                if(
    $this->IsEmptyField())
                {
                    
    $this->ErrorResult(1);
                }
     
                
    /*if(!$this->VerifyPassword())
                {
                    $this->ErrorResult(2);
                }*/
     
                
    if($this->nomeExists())
                {
                    
    $this->ErrorResult(3);
                }
     
                if(
    $this->emailExists())
                {
                    
    $this->ErrorResult(4);
                }
                if(!
    $this->VerifyEmail())
                {
                    
    $this->ErrorResult(5);
                }
     
                
    $this->InsertNewUser();
     
            }
        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
            } 
     
            protected function 
    SendUserMail ($key)
            {
                
    $content .= "Benvenuto $_POST[nome],\r\n";
                
    $content .= "Questi sono i tuoi dati di registrazione, \r\n\r\n" ;
                
    $content .="Nome: $_POST[nome]\r\nCognome: $_POST[cognome] \r\nCellulare: $_POST[cell]\r\nEmail: $_POST[email] \r\n\r\n";
                
    $content .= "per confermare la tua iscrizione devi cliccare sul seguente link:\r\n\r\n";
                
    $content .= "http://www.zxxxxxxx.it/registration/verify_user.php?key=" $key;
                
    mail($_POST['email'], "Iscrizione al sito..."$content"From: ZeeroStress<info@xxxxxx.it>");
     
                return;
            }
     
            protected function 
    InsertNewUser()
            {
                
    $password md5($_POST['password']);
                
    $key_control $this->GetKey(40);
     
                
    $sql "INSERT INTO iscrizione (username,passowrd,data,luogo,sesso,documento,numdoc,
                provnascita,città,rovincia,cf,residenza,provres,cap,address,civico,fax,cell,tel,email,note, key_control) 
                VALUES 
                ('
    $nome', '$cognome', '$data', '$luogo', '$sesso', '$documento', '$numdoc', '$provnascita', '$città','$provincia', '$cf', '$residenza',
    '
    $provres', '$cap', '$address', '$civico', '$fax', '$cell', '$tel', '$email', '$note', '$key_control')";
     
                
    $this->DbConnect();
     
                
    mysql_query($sql,$this->conn);
     
                
    mysql_close($this->conn);
     
                
    $this->SendUserMail($key_control);
            }
     
            public function 
    VerifyUser()
            {
                
    $sql "SELECT id FROM iscrizione WHERE key_control='$_GET[key]'";
                
    $this->DbConnect();
                
    $res mysql_query($sql,$this->conn);
     
                if(
    $row mysql_fetch_array($res))
                {
                    
    $query "UPDATE iscrizione 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!";
                }
            }
    I campi sul Db sono presenti tutti, idem nel form.php... da cosa dipende?
     
  2. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.550
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    continua ad esserci l'incoerenza
    PHP:
        protected function GetKey()  
            {  
                
    $car "aAbBcCdDeEfFgGhHiIlLjJkKmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789";  
                
    $dim 40;  
                
    srand((double)microtime()*1000000);  


            protected function 
    InsertNewUser() 
            { 
                
    $password md5($_POST['password']); 
                
    $key_control $this->GetKey(40); 

     
  3. Dylan VDj Canziani

    Dylan VDj Canziani Nuovo Utente

    Registrato:
    26 Marzo 2015
    Messaggi:
    11
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Ciao marino, scusami ma come dicevo sono un ignorantone :) cosa intendi per incoerenza?
     
  4. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.550
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    la funzione GetKey() non prevede di ricevere nessun parametro quindi GetKey(40) è incongruo, a meno che, tu abbia fatto modifiche che non hai riportato nei tuoi post
     
  5. Dylan VDj Canziani

    Dylan VDj Canziani Nuovo Utente

    Registrato:
    26 Marzo 2015
    Messaggi:
    11
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    no non ho fatto modifica alcuna. ho copiato il codice così come era
     
  6. otto9due

    otto9due Utente Attivo

    Registrato:
    22 Febbraio 2014
    Messaggi:
    529
    Mi Piace Ricevuti:
    21
    Punteggio:
    28
    Io ho usato lo stesso codice sul un sito fatto recentemente, diciamo che l'ho adattato alle mie esigenze, perchè a me serviva per una registrazione newsletter. Il codice funziona bene, almeno nel mio caso.. Hai creato le altre pagine che richiamano la classe come spiegato nella guida?
    Il procedimento dovrebbe essere questo, lui crea questa stringa da 40 caratteri e la salva nel db con nome e cognome e un campo ver ( impostato di defoult a 0 ) e subito dopo manda la mail.. Quindi la corrispondenza dev'esserci sicuro..
    Quando clicchi sul link in mail.. Si collega ad un'altra pag, ovvero verify_user.php e tramite il metodo VerifyUser() della classe da te postata verifica la corrispondenza tramite una ricerca nel db secondo quella stessa stringa da 40 caratteri se c'è imposta quella a 0 e ver ad 1..
    Se hai la possibilità di entrare nel db vedi un pò se l'utente che ti crea problemi ha ancora ver a 0 e la stringa da 40 caratteri..
     
  7. Dylan VDj Canziani

    Dylan VDj Canziani Nuovo Utente

    Registrato:
    26 Marzo 2015
    Messaggi:
    11
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    il db è vuoto. non è registrato nessun utente.. è quello che me stranisce. ho fatto tutto come nel tutorial. creato le pagine come descritto. la Mail di verifica arriva, ma, quando clicchi sul link di converma www.xxxxx.it/verify_user=1234567892222 mi da sempre " IMPOSSIBILE VERIFICARE L ACCOUNT"
     
    Ultima modifica: 10 Aprile 2015
  8. otto9due

    otto9due Utente Attivo

    Registrato:
    22 Febbraio 2014
    Messaggi:
    529
    Mi Piace Ricevuti:
    21
    Punteggio:
    28
    Allora credo che il problema risieda sul db, nel senso che non riesce a salvare i dati..
    Secondo me hai fatto qualche casotto qui..

    PHP:
    protected function InsertNewUser() 
            { 
                
    $password md5($_POST['password']); 
                
    $key_control $this->GetKey(40); 
      
                
    $sql "INSERT INTO iscrizione (username,passowrd,data,luogo,sesso,documento,numdoc, 
                provnascita,città,rovincia,cf,residenza,provres,cap,address,civico,fax,cell,tel,email,note, key_control)  
                VALUES  
                ('
    $nome', '$cognome', '$data', '$luogo', '$sesso', '$documento', '$numdoc', '$provnascita', '$città','$provincia', '$cf', '$residenza', 
    '
    $provres', '$cap', '$address', '$civico', '$fax', '$cell', '$tel', '$email', '$note', '$key_control')"
      
                
    $this->DbConnect(); 
      
                
    mysql_query($sql,$this->conn); 
      
                
    mysql_close($this->conn); 
      
                
    $this->SendUserMail($key_control); 
            } 
      
    Primo correggi "rovincia "

    Controlla che quando hai creato la tabella nel db, non hai messo che tutti i valori siano obbligatori. In questo caso se anche solo un valore risulta obbligatorio sul db e non lo inserisci, il db non prende nulla..

    Cmq fino a quando il db ti risulta vuoto non potà verificare alcun utente..
     
    Ultima modifica: 10 Aprile 2015
  9. Dylan VDj Canziani

    Dylan VDj Canziani Nuovo Utente

    Registrato:
    26 Marzo 2015
    Messaggi:
    11
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    risolto ragazzi.. era un problema di a_ruba!!! :)
     
  10. otto9due

    otto9due Utente Attivo

    Registrato:
    22 Febbraio 2014
    Messaggi:
    529
    Mi Piace Ricevuti:
    21
    Punteggio:
    28
    Che tipo di problema perchè io non ne ho avuti? Così magari dovesse servire ad altri sanno già dove cercare :D
     
  11. Dylan VDj Canziani

    Dylan VDj Canziani Nuovo Utente

    Registrato:
    26 Marzo 2015
    Messaggi:
    11
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    errata config del server a quanto pare. hanno resettato ed è andato tutto lol
     
Sto caricando...

Condividi questa Pagina