Ciao a tutti,

Ho scritto questa classe grazie alle conoscenze acquisite fino ad ora, un po con il vostro aiuto e a seconda dei consigli trovati in rete....

posto la classe e vi dico le mie perplessità :

Codice PHP:
<?php

class utente{   
    private 
$idutente;   
    private 
$ut_idsession;
    private 
$user;   
    private 
$password;
    private 
$flagamm;
    private 
$scadpsw;
    private 
$blocco;
    private 
$db;
    
/*
    public function __construct($idutente = null, $user = null){        
        $this->firstname = $idutente;        
        $this->lastname = $user;   
    }      
    */
    
public function setConnection($db){        
        
$this->db $db;   
    }      
    
    public function 
load($idutente){        
    
        
$rk $this->db->fetch("SELECT * FROM utenti WHERE idutente = :idutente",array('idutente' => $idutente ));        
        
        
$this->idutente $rk['idutente'];        
        
$this->ut_idsession $rk['ut_idsession'];         
        
$this->user $rk['user'];        
        
$this->password $rk['password'];   
        
$this->flagamm $rk['flagamm']; 
        
$this->scadpsw $rk['scadpsw']; 
        
$this->blocco $rk['blocco']; 
    }      
    
    public function 
getIdutente(){        
        return 
$this->idutente;   
    }  
    
    public function 
getUser(){        
        return 
$this->user;   
    }      
    public function 
getPassword(){        
        return 
$this->getPassword;
    }   
    
    public function 
CheckLogin($user,$password){
        
$rk=$this->db->fetch("SELECT idutente FROM utenti WHERE user = :user AND password = :password",array('user' => $user'password' =>$password));
        if(
$rk['idutente']!=false){
            
$this->load($rk['idutente']);
            
            
//CONTROLLO BLOCCO UTENTE
            
if($this->blocco == "s")
                throw new 
Exception("Utente bloccato.<br />Contattare il supporto tecnico.");   
                
            
//APRO SESSIONE
            
session_start();
            
//old version... da rimuovere
            
$_SESSION['idutente']=$this->idutente;
            
$_SESSION['utente']=$this->user;
            
$_SESSION['flag']=$this->flagamm;
            
//old versione... da rimuovere     
            
            
$this->CreateSession();
            
$this->Update();    

            if(
$this->scadpsw <= date("Y-m-d"))
                
header('Location: login.php?funz=ChangePassword');
            else
                   
header('Location: index.php');

        }else{
            throw new 
Exception("Utente o Password non corretti");
        }
    }
    
    public function 
CreateSession(){
        
$caratteri    "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        
$len           strlen($caratteri);
        
$idsession   '';
        
mt_srand(10000000*(double)microtime());
        for (
$i 0$i 20$i++)
               
$idsession .= $caratteri[mt_rand(0,$len 1)];

          
$_SESSION['idsession']=$idsession;
          
$this->ut_idsession $idsession;
    }

    public function 
Update(){
        
$sql ="UPDATE utenti SET ";
            
$sql.="idutente = :idutente,";
            
$sql.="ut_idsession = :ut_idsession,";
            
$sql.="user = :user,";
            
$sql.="password = :password,";
            
$sql.="flagamm = :flagamm,";
            
$sql.="blocco = :blocco ";
        
$sql.="WHERE idutente = :id";
        
        
$parameter = array('idutente' => $this->idutente
                           
'ut_idsession' => $this->ut_idsession,
                           
'user' => $this->user,
                           
'password' => $this->password,
                           
'flagamm' => $this->flagamm,
                           
'blocco' => $this->blocco,
                           
'id' => $this->idutente);
        return 
$this->db->executeUpdate($sql,$parameter);
    }


    
//add set methods and others (like save/delete methods)}     
}
?>
il tutto funziona correttamente, mancano ancora tutti i getter e setter e le funzioni come insert e delete....
Le mie perplessità sono due, una proprio strutturale in particolare sull'update (e anche nel futuro insert).
L'ho pensato in modo che il metodo detenga l'esatta sql che aggiorna l'intero record, prendendo le proprietà dalla classe stessa.
Questo mi vincola, nel caso Update a fare, il load dell'oggetto, cambiare le proprietà da modificare e poi lanciare l'update....
Questa cosa è corretta oppure no?

La seconda cosa è più pratica, in sostanza ho pensato di generare un stringa casuale da inserire all'interno della variabile di sessione a parità di utente, quando questo viene autenticato...
Nelle pagine in cui andrò a fare il controllo pensavo di recuperare idsession, tramite questo parametro recuperare l'utente e tutte le info accessorie (tipo i permessi legati ad ogni entità)....
E' corretta questa cosa o avete suggerimenti?

Grazie a tutti

Ciao
Paolo