Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [php] problema inserimento dati DB

    ciao,

    ho questa classe che riceve dal form i dati per una registrazione utente.
    mi funziona tutto: gestione errori, invio email per conferma registrazione, ma non fa la cosa più importante...non inserisce nulla all'interno del DB e non mi restituisce nessun tipo di warning o errore....

    perchè????

    la classe:



    Codice PHP:
    <?php ini_set('display_errors''On'); 
    error_reporting(E_ALL); 

    class 
    NewUser 
    public 
    $conn
    public function 
    AddUser() 

       
    $this->ErrorReport(); 


    protected function 
    DbConnect() 

    include 
    "db_conn.php"
    $this->conn mysql_connect($host,$user,$password) OR die("Impossibile connettersi al database"); 
    mysql_select_db($db$this->conn); 



    protected function 
    IsEmptyField() 

    if(empty(
    $_POST['nome']) OR empty($_POST['email']) OR empty($_POST['password']) OR empty($_POST['provincia'])) 

    { return 
    TRUE
    } else { 
    return 
    FALSE



    protected function 
    VerifyPassword() 
    { if(
    $_POST['password'] == $_POST['password2']) 
    { return 
    TRUE
    } else { 
    return 
    FALSE



    protected function 
    UsernameExists() 

    $this->DbConnect(); 

    $sql "SELECT nome FROM tbl_user_reg 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 * FROM tbl_user_reg 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: modulo_iscrizione_newsletter.php?alert=" $num); die; 

    protected function 
    ErrorReport() 

    if(
    $this->IsEmptyField()) 

    $this->ErrorResult(1); 

    if(!
    $this->VerifyPassword()) 

    $this->ErrorResult(2); 

    if(
    $this->UsernameExists()) 

    $this->ErrorResult(3); 

    if(
    $this->EmailExists()) 

    $this->ErrorResult(4); 

    if(!
    $this->VerifyEmail()) 

    $this->ErrorResult(5); 

    $this->InsertNewUser(); 

    protected function 
    GetKey() { $car "aAbBcCdDeEfFgGhHiIlLjJkKmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789"$dim 40srand((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 .= "per confermare la tua iscrizione devi cliccare sul seguente link:\r\n\r\n"$content .= "http://localhost/newsletter/verify_user.php?key=" $key
    mail($_POST['email'], "Iscrizione al sito..."$content"From: io<nome@miamail.it>"); 
    return; 

    protected function 
    InsertNewUser() 

    $password md5($_POST['password']); 
    $key_control $this->GetKey(); 
    $sql "INSERT INTO tbl_user_reg (nome,email,password,provincia,key_control) VALUES ('$_POST[nome]','$_POST[email]','$password','$_POST[provincia]','$key_control')"
    $this->DbConnect(); 
    mysql_query($sql,$this->conn); 
    mysql_close($this->conn); 
    $this->SendUserMail($key_control); 


    public function 
    VerifyUser() 

    $sql "SELECT id_user_reg FROM tbl_user_reg WHERE key_control='$_GET[key]'"$this->DbConnect(); 
    $res mysql_query($sql,$this->conn); 
    if(
    $row mysql_fetch_array($res)) 

    $query "UPDATE tbl_user_reg 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!"



    ?>

  2. #2
    Prova a modificare questa riga:

    Codice PHP:
    mysql_query($sql,$this->conn); 
    così:

    Codice PHP:
    mysql_query($sql,$this->conn) or die ("Errore: ".mysql_error()); 
    e vedi se ti restituisce qualche errore.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    allora, ho aggiunto la riga
    mysql_query($sql,$this->conn); così ho potuto vedere dov'era l'errore.

    ma adesso non capisco questo problema:

    quando ricevo via email l'url con la stringa per la conferma della registrazione e l'eseguo, non mi esegue la query di UPDATE:

    questo è l'esempio di link con la stringa:

    http://localhost/newsletter/verify_u...e7X4P4mJsZC6p8

    il file verify_user.php non fa altro che richiamare la funzione qui sotto:

    Codice PHP:
    public function VerifyUser() { 

    $sql "SELECT id_user_reg FROM tbl_user_reg WHERE key_control='$_GET[key]'"
    $this->DbConnect(); 
    $res mysql_query($sql,$this->conn) or die ("Errore: ".mysql_error()); 

    if(
    $row mysql_fetch_array($res)) 

    $query "UPDATE tbl_user_reg SET ver=1,key_control='0' WHERE id_user_reg= '$row[id_user_reg]'"

    mysql_query($sql,$this->conn) or die ("Errore: ".mysql_error()); mysql_close($this->conn); echo "Il tuo account è ora attivato!"
    } else { 
    echo 
    "Impossibile verificare l'account!"


    ho controllato il valore di $_GET[key] ed è corretto.
    ho provato anche ad alterarlo per vedere se mi da l'errore di corrispondenza con quello inserito nel DB..e questo va bene.

    ho controllato il valore di $row[id_user_reg] e mi da l'id corrispondente alla stringa di $_GET[key]

    ho provato anche ad eseguire manualmente la query sql in phpmyadmin e funziona

    perchè così com'è non funziona???

  4. #4
    Ma ti da qualche errore?
    Prova così:

    Codice PHP:
    if (mysql_num_rows($res) > 0) {
        
    $row mysql_fetch_array($res);
        
    $query "UPDATE tbl_user_reg SET ver=1, key_control='0' WHERE id_user_reg= '$row[id_user_reg]'"

        
    mysql_query($sql$this->conn) or die ("Errore: ".mysql_error()); 
        
    mysql_close($this->conn); 
        echo 
    "Il tuo account è ora attivato!"
    } else { 
        echo 
    "Impossibile verificare l'account!"

    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    non mi da nessun errore!

    ho provato come dici tu e non cambia nulla.....

  6. #6
    Sei sicuro che la funzione VerifyUser() venga invocata?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    nella stringa di conferma
    http://localhost/newsletter/verify_u...mpxGkAQQvubENS

    punto al file verify_user.php che contiene

    Codice PHP:
    <?php include 'newuser.class.php'

    $newuser = new NewUser(); 
    $newuser->VerifyUser(); ?>
    e comunque ho fatto la prova di modificare la stringa, ad esempio,

    hkVKv1Q061Utjzf3wwTMNAFkjVmpxGkAQQvubENS

    con qualcos'altro tipo

    hkVKv1Q061Utjzf3wwTMNAFkjVmpxGkAQQ111222

    ed effettivamente mi da l'errore, quindi è la conferma che la funzione viene chiamata...o no?

  8. #8
    Trovato l'errore, quando esegui la query di UPDATE modifica:

    Codice PHP:
    ...
    mysql_query($sql,$this->conn) or die ("Errore: ".mysql_error());
    ... 
    con:

    Codice PHP:
    ...
    mysql_query($query,$this->conn) or die ("Errore: ".mysql_error());
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    ma vaff....!!!

    hai ragione....

    a volte vai a cercare l'errore chissà dove, invece era così semplice...

    non ho parole...

    grazie mille satifal...

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.