Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269

    Metodo controlla login (OOP)

    Salve ragazzi, ho creato una classe (Database):

    Codice PHP:
    <?php

    class Database
    {

        
    /* 
         * Variabile locale alla struttura class database
         */
        
    private $db_host '';                    // Host del server
        
    private $db_user '';                    // Db Username
        
    private $db_pass '';                    // Db Password    
        
    private $db_name '';                    // Db Name
        
        
    private $result;                        // Risultati restituiti dalla query
        
        /* 
         * Metodo per la connessione al database
         */
        
    public function connect()
        {
            
    $db_conn mysql_connect($this->db_host$this->db_user$this->db_pass) or die ("Errore nella connessione al db: " mysql_error());
            
            if (
    $db_conn)
            {
                
    $db_select mysql_select_db($this->db_name,$db_conn) or die ("Errore nella selezione del db: " mysql_error());
            }
            
            if (
    $db_select)
            {
                return 
    true;
            }
        }
        
        public function 
    query($query
        {
            
    $this->result mysql_query($query);
     
            if (
    $this->result != 0) {
                return 
    1;
            }
            else {
                return 
    0;
            }
        }
        
        
    /*
         * numRows
         */
        
    public function numRows()
        {
            return 
    mysql_num_rows($this->result);
        }
     
        
    /*
         * Fetches an array row
         */
        
    public function fetchRow() 
        {
            return 
    mysql_fetch_array($this->result);
        }
        
        
    /*
         * Check user on the database
         */
        
    public function checkUser($query)
        {
            ...
        }
    }

    ?>
    Funziona perfettamente, adesso dovrei però creare un metodo checkUser che mi permetta di controllare se un utente è registrato o meno sul db.

    Ho questo file che però funziona in modo iterativo:
    Codice PHP:
    <?php

    // Includo il file class.php e richiamo il metodo connect()
    include_once("../class.php");
    $db = new Database;
    $db->connect();

    // Ricavo i valori inviati tramite form POST
    $username mysql_real_escape_string($_POST['username']);
    $password md5($_POST['password']);

    // Controllo se nel database è presente username e password
    $query "SELECT * FROM admin WHERE username = '".$username."' AND password = '".$password."'";
    $db->query($query) or die ("Errore query: " mysql_error());
    $num_rows $db->numRows();
    $row $db->fetchRow($db->query($query));

    if (
    $num_rows != 1)
    {
        
        
    // Ritrono alla pagina di login con un parametro
        
    header("Location: login.php?error=1");
        exit();
        
    } else {
        
        
    // Inizalizzo la sessione
        
    session_start(); 
        
        
    // Includo le funzioni e richiamo quella che mi permette di generare il codice alfanumerico di 32 caratteri
        
    include_once("functions.php");
        
        
    // Includo la key in una variabile $logkey
        
    $logkey SessioneCasuale(); 
        
        
    // Modifico il codice ogni volta che effettuo il login 
        
    $update "UPDATE admin SET logkey = '$logkey' WHERE username = '$username'";
        
    $db->query($update) or die ("Errore update query: " mysql_error());
        
        
    // Salvo in sessione il valore alfanumerico                        
        
    $_SESSION['logkey'] = $logkey;
        
        
    // Chiudo la connessione al database
        
    mysql_close($db->connect());
        
        
    header("Location: panel.php");
        
    }

    ?>
    Dovrei rendere tutto come metodo della classe "Database", qualcuno può aiutarmi?


    Grazie anticipatamente , gaten
    Con i sogni possiamo conoscere il futuro...

  2. #2
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Ragazzi, io ho provato a procedere in questo modo, ma non nè sono sicuro:

    Codice PHP:
    <?php

    class Database
    {

        
    /* 
         * Variabile locale alla struttura class database
         */
        
    private $db_host '';                    // Host del server
        
    private $db_user '';                    // Db Username
        
    private $db_pass '';                    // Db Password    
        
    private $db_name '';                    // Db Name
        
        
    private $result;                        // Risultati restituiti dalla query
        
        /* 
         * Metodo per la connessione al database
         */
        
    public function connect()
        {
            
    $db_conn mysql_connect($this->db_host$this->db_user$this->db_pass) or die ("Errore nella connessione al db: " mysql_error());
            
            if (
    $db_conn)
            {
                
    $db_select mysql_select_db($this->db_name,$db_conn) or die ("Errore nella selezione del db: " mysql_error());
            }
            
            if (
    $db_select)
            {
                return 
    true;
            }
        }
        
        public function 
    query($query
        {
            
    $this->result mysql_query($query);
     
            if (
    $this->result != 0) {
                return 
    1;
            }
            else {
                return 
    0;
            }
        }
        
        
    /*
         * numRows
         */
        
    public function numRows()
        {
            return 
    mysql_num_rows($this->result);
        }
     
        
    /*
         * Fetches an array row
         */
        
    public function fetchRow() 
        {
            return 
    mysql_fetch_array($this->result);
        }
    }


    /* CLASS CHECKUSER */

    class checkUser extends Database
    {
        private 
    $NUM_CHAR=32;
        private 
    $String;
        private 
    $N;
        private 
    $logkey;
            
        
    /* Genero il codice alfanumerico da 32 caratteri */
        
    protected function createSession()
        {
            for (
    $i=0$i<$this->NUM_CHAR$i++){
            do{
                
    $N=ceil(rand(48122));
            }while(!(((
    $this->>= 48) && ($this-><= 57)) || (($this->>= 65) && ($this-><= 90)) || (($this->>= 97) && ($this-><= 122))));
                
            
    $this->String=$this->String.chr($this->N);
            }
            
            return 
    $this->String;
        }
        
        
        
        public function 
    EscapeFields($username$password)
        {
            
    $username=mysql_real_escape_string($username);
            
    $password=md5($password);
        }
        
        
    /*
         * Check user on the database
         */
        
    public function checkUser($username$password)
        {
            
    // Ricavo i valori inviati tramite form POST ed eseguo l'escape
            
    $this->EscapeFields($username$password);
            
    $query "SELECT * FROM admin WHERE username = '".$username."' AND password = '".$password."'";
            
    $this->query($query) or die ("Errore query: " mysql_error());
            
            if ( 
    $this->numRows() != )
                
    ERRORE
            
    else {
                
    // Inizalizzo la sessione
                
    session_start();
                
                
    // Genero il codice alfanumerico formato da 32 caratteri
                
    $this->logkey $this->createSession();
                
                
    // Modifico il codice ogni volta che effettuo il login 
                
    $update "UPDATE admin SET logkey = '$this->logkey' WHERE username = '$username'";
                
    $this->query($update) or die ("Errore query: " mysql_error());
                
                
    // Salvo in sessione il valore alfanumerico                        
                
    $_SESSION['logkey'] = $this->$logkey;    
                
                
    VENGO LINKATO ALLA PAGINA PROTETTA
            
    }
        }
    }
    ?>

    E' corretto come procedimento? se ci sono errori qualcuno può evidenziarmeli?

    Grazie anticipatamente gaten.
    Con i sogni possiamo conoscere il futuro...

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.