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