Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class Users
- {
- private $nickname;
- private $password;
- private $rank;
- private $mail;
- /*
- * @name: logIn()
- * @param: $user => Pseudo
- * $pass => Mot de passe non crypté
- * @desc: Vérifie si les identifiants sont valides et connecte l'utilisateur si c'est le cas
- */
- public function logIn($user, $pass)
- {
- global $DB;
- $this->nickname = $user;
- $this->password = $this->crypt($pass);
- $req = $DB->prepare('SELECT * FROM users WHERE nickname=:nickname');
- $req->bindValue(':nickname', $this->nickname, PDO::PARAM_STR);
- $req->execute();
- $fetch = $req->fetch(PDO::FETCH_ASSOC);
- // Si l'utilisateur existe et que son mot de passe entré est le même que le mot de passe stocké
- if($req->rowCount() == 1 && $fetch['password'] == $this->password)
- {
- $this->mail = $fetch['mail'];
- $this->rank = $fetch['rank'];
- $this->setSession();
- return true;
- }
- else
- {
- return false;
- }
- }
- public function loginfromArray($array)
- {
- global $tools;
- $this->logIn($array['pseudo'], $array['password']);
- $tools->redirect('index.php');
- }
- /*
- * @name: signUp()
- * @param: $user => Pseudo
- * $pass => Mot de passe non crypté
- * $mail => Adresse mail
- * @desc: Enregistre un membre dans la base de données si son pseudo ou son mail ne sont pas pris
- */
- public function signUp($user, $pass, $mail)
- {
- global $DB;
- $req = $DB->prepare('SELECT * FROM users WHERE nickname=:nickname OR mail=:mail');
- $req->bindValue(':nickname', $user, PDO::PARAM_STR);
- $req->bindValue(':mail', $mail, PDO::PARAM_STR);
- $req->execute();
- // Si le pseudo ou l'adresse mail est déjà pris, on retourne faux
- if($req->rowCount() > 0)
- {
- return false;
- }
- else
- {
- // On enregistre le nouveau membre dans la base de données
- $req = $DB->prepare('INSERT INTO users (nickname, password, mail) VALUES (:nickname, :password, :mail)');
- $req->bindValue(':nickname', $user, PDO::PARAM_STR);
- $req->bindValue(':password', $this->crypt($pass), PDO::PARAM_STR);
- $req->bindValue(':mail', $mail, PDO::PARAM_STR);
- $req->execute();
- return true;
- }
- }
- /*
- * @name: minRank()
- * @param: $rank => Valeur de rank minimum
- * @desc: Retourne vrai si le rank du membre est supérieur ou égal au rank entré en paramètre
- */
- public function minRank($rank)
- {
- global $DB;
- $req = $DB->prepare('SELECT * FROM users WHERE nickname=:nickname');
- $req->bindValue(':nickname', $this->nickname, PDO::PARAM_STR);
- $req->execute();
- $fetch = $req->fetch(PDO::FETCH_ASSOC);
- // Si le rank de l'utilisateur est supérieur ou égal à celui entré comme paramètre
- if($fetch['rank'] >= $rank)
- return true;
- else
- return false;
- }
- /*
- * @name: crypt()
- * @param: $pass => Mot de passe à crypter
- * @desc: Retourne le mot de passe crypté (md5.sha1.md5(sha1))
- */
- private function crypt($pass)
- {
- return md5($pass).sha1($pass).md5(sha1($pass));
- }
- /*
- * @name: setSession()
- * @desc: On enregistre les données membre dans la session
- */
- private function setSession()
- {
- $_SESSION['nickname'] = $this->nickname;
- $_SESSION['password'] = $this->password;
- $_SESSION['rank'] = $this->rank;
- $_SESSION['mail'] = $this->mail;
- }
- /*
- * @name: checkSession()
- * @desc: Si une session existe et est valide, on rentre ses données dans les données membre. Sinon, on détruit la session.
- */
- public function checkSession()
- {
- if(isset($_SESSION['nickname'], $_SESSION['password']))
- {
- global $DB;
- $req = $DB->prepare('SELECT * FROM users WHERE nickname=:nickname AND password=:password AND mail=:mail');
- $req->bindValue(':nickname', $_SESSION['nickname'], PDO::PARAM_STR);
- $req->bindValue(':password', $_SESSION['password'], PDO::PARAM_STR);
- $req->bindValue(':mail', $_SESSION['mail'], PDO::PARAM_STR);
- $req->execute();
- if($req->rowCount() == 1)
- {
- $this->nickname = $_SESSION['nickname'];
- $this->password = $_SESSION['password'];
- $this->rank = $_SESSION['rank'];
- $this->mail = $_SESSION['mail'];
- return true;
- }
- else
- {
- session_destroy();
- return false;
- }
- }
- return false;
- }
- /* --------------------------------------------------- *
- * *
- * GETTERS *
- * *
- * --------------------------------------------------- */
- /*
- * @name: getNickname()
- * @desc: Retourne le pseudo de l'utilisateur connecté
- */
- public function getNickname()
- {
- return $this->nickname;
- }
- /*
- * @name: getMail()
- * @desc: Retourne l'adresse mail de l'utilisateur connecté
- */
- public function getMail()
- {
- return $this->mail;
- }
- /*
- * @name: getJauge()
- * @param: $jauge => Jauge ("courage", "curiosite", "gentillesse", "humour")
- * @desc: Retourne la valeur de la jauge demandée pour l'utilisateur
- */
- public function getJauge($jauge)
- {
- global $DB;
- $jauge = 'jauge'.ucfirst($jauge);
- $req = $DB->prepare("SELECT * FROM users WHERE nickname = :nickname");
- $req->bindValue(':nickname', $this->nickname, PDO::PARAM_STR);
- $req->execute();
- $fetch = $req->fetch(PDO::FETCH_ASSOC);
- return $fetch[$jauge];
- }
- /*
- * @name: getSizeJauge()
- * @param: $jauge => Nom de la jauge dont la taille est calculée
- * $max => Valeur max que prendra la jauge
- * $unit => Unité ("px" ou "%" par exemple)
- * @desc: Retourne la valeur d'une jauge en fonction d'une valeur maximale de jauge
- */
- public function getSizeJauge($jauge, $max, $unit)
- {
- $jauge = $this->getJauge($jauge);
- $maxJauge = $this->getMaxJauge();
- $calcul = $jauge/$maxJauge*$max;
- return $calcul.$unit;
- }
- /*
- * @name: getMaxJauge()
- * @desc: Retourne la valeur max des jauges pour l'utilisateur
- */
- public function getMaxJauge()
- {
- $tab = array(
- $this->getJauge('courage'),
- $this->getJauge('curiosite'),
- $this->getJauge('gentillesse'),
- $this->getJauge('humour')
- );
- return max($tab);
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement