Pubblicato il 26/05/2023
Una semplice classe PHP per gestire le diverse classi di utenza memorizzando il login nei cookie.
class userClass{
/* USER LOGIN */
function userLogin($username,$password){
try{
$dsn = 'mysql:dbname='.NOME_DB.';host='.HOST_DB;
$user = UTENTE_DB;
$pass = PSW_DB;
$db = new PDO($dsn, $user, $pass);
$hash_password= hash('sha256', $password);
$stmt = $db->prepare("SELECT * FROM users WHERE username=:username AND password=:hash_password AND active=1");
$stmt->bindParam("username", $username,PDO::PARAM_STR) ;
$stmt->bindParam("hash_password", $hash_password,PDO::PARAM_STR) ;
$stmt->execute();
$count=$stmt->rowCount();
$data=$stmt->fetch(PDO::FETCH_OBJ);
if($count != 0){
$_SESSION['uid'] = $data->id;
if($data->role == 2){
// LOGIN IMPOSTATO A 1 ANNO
setcookie("UID", $data->id, strtotime("+1 year"), "/", NOME_SITO);
}else{
// LOGIN IMPOSTATO A 5 ORE
setcookie("UID", $data->id, time()+18000, "/", NOME_SITO);
}
return '100';
}else{
$stmt = $db->prepare("SELECT * FROM users WHERE email=:username AND password=:hash_password AND active=1");
$stmt->bindParam("username", $username,PDO::PARAM_STR) ;
$stmt->bindParam("hash_password", $hash_password,PDO::PARAM_STR) ;
$stmt->execute();
$count=$stmt->rowCount();
$data=$stmt->fetch(PDO::FETCH_OBJ);
if($count != 0){
$_SESSION['uid'] = $data->id;
if($data->role == 2){
// LOGIN IMPOSTATO A 1 ANNO
setcookie("UID", $data->id, strtotime("+1 year"), "/", NOME_SITO);
}else{
// LOGIN IMPOSTATO A 5 ORE
setcookie("UID", $data->id, time()+18000, "/", NOME_SITO);
}
return '100';
}else{
return '200';
}
}
}
catch(PDOException $e) {
return '500';
}
}
/* USER DETAILS */
function userDetails($id){
try{
$dsn = 'mysql:dbname='.NOME_DB.';host='.HOST_DB;
$user = UTENTE_DB;
$pass = PSW_DB;
$db = new PDO($dsn, $user, $pass);
$stmt = $db->prepare("SELECT * FROM users WHERE id=:id");
$stmt->bindParam("id", $id,PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetch(PDO::FETCH_OBJ); // $data = array con dati dell'utente
return $data;
}
catch(PDOException $e) {
echo '{"Errore userDetails ":'. $e->getMessage() .'}';
}
}
/* USER REGISTRATION */
function userRegistration($username,$password,$email,$role,$active,$psw_chiaro){
try{
$dsn = 'mysql:dbname='.NOME_DB.';host='.HOST_DB;
$user = UTENTE_DB;
$pass = PSW_DB;
$hash_password= hash('sha256', $password);
$db = new PDO($dsn, $user, $pass);
$stmt = $db->prepare("SELECT * FROM users WHERE username=:username");
$stmt->bindParam("username", $username,PDO::PARAM_STR) ;
$stmt->execute();
$count=$stmt->rowCount();
$data=$stmt->fetch(PDO::FETCH_OBJ);
if($count == 0){
$stmt = $db->prepare("INSERT INTO users (username,password,email,role,active,psw_chiaro) VALUES (:username, :password,:email,:role,:active,:psw_chiaro)");
$stmt->bindParam("username", $username,PDO::PARAM_STR);
$stmt->bindParam("password", $hash_password,PDO::PARAM_STR);
$stmt->bindParam("email", $email,PDO::PARAM_STR);
$stmt->bindParam("role", $role,PDO::PARAM_INT);
$stmt->bindParam("active", $active,PDO::PARAM_INT);
$stmt->bindParam("psw_chiaro", $psw_chiaro,PDO::PARAM_STR);
$stmt->execute();
return 'ok';
}else{
return 'ko';
}
}
catch(PDOException $e) {
return 'ko';
}
}
}