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.