Classe PHP per la gestione di utenti

Classe PHP per la gestione di utenti

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';
    }
  }
}

Categoria: PHP Script

Condividi sui Social: