Advertisement
Guest User

Untitled

a guest
Apr 26th, 2016
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.17 KB | None | 0 0
  1. <?php
  2.  
  3. class Users
  4. {
  5.     private $nickname;
  6.     private $password;
  7.     private $rank;
  8.     private $mail;
  9.  
  10.     /*
  11.      * @name:  logIn()
  12.      * @param: $user => Pseudo
  13.      *         $pass => Mot de passe non crypté
  14.      * @desc:  Vérifie si les identifiants sont valides et connecte l'utilisateur si c'est le cas
  15.      */
  16.     public function logIn($user, $pass)
  17.     {
  18.         global $DB;
  19.         $this->nickname = $user;
  20.         $this->password = $this->crypt($pass);
  21.  
  22.         $req = $DB->prepare('SELECT * FROM users WHERE nickname=:nickname');
  23.         $req->bindValue(':nickname', $this->nickname, PDO::PARAM_STR);
  24.         $req->execute();
  25.         $fetch = $req->fetch(PDO::FETCH_ASSOC);
  26.  
  27.         // Si l'utilisateur existe et que son mot de passe entré est le même que le mot de passe stocké
  28.         if($req->rowCount() == 1 && $fetch['password'] == $this->password)
  29.         {
  30.             $this->mail = $fetch['mail'];
  31.             $this->rank = $fetch['rank'];
  32.             $this->setSession();
  33.             return true;
  34.         }
  35.         else
  36.         {
  37.             return false;
  38.         }
  39.     }
  40.  
  41.     public function loginfromArray($array)
  42.     {
  43.         global $tools;
  44.         $this->logIn($array['pseudo'], $array['password']);
  45.         $tools->redirect('index.php');
  46.     }
  47.  
  48.     /*
  49.      * @name:  signUp()
  50.      * @param: $user => Pseudo
  51.      *         $pass => Mot de passe non crypté
  52.      *         $mail => Adresse mail
  53.      * @desc:  Enregistre un membre dans la base de données si son pseudo ou son mail ne sont pas pris
  54.      */
  55.     public function signUp($user, $pass, $mail)
  56.     {
  57.         global $DB;
  58.         $req = $DB->prepare('SELECT * FROM users WHERE nickname=:nickname OR mail=:mail');
  59.         $req->bindValue(':nickname', $user, PDO::PARAM_STR);
  60.         $req->bindValue(':mail',     $mail, PDO::PARAM_STR);
  61.         $req->execute();
  62.  
  63.         // Si le pseudo ou l'adresse mail est déjà pris, on retourne faux
  64.         if($req->rowCount() > 0)
  65.         {
  66.             return false;
  67.         }
  68.         else
  69.         {
  70.             // On enregistre le nouveau membre dans la base de données
  71.             $req = $DB->prepare('INSERT INTO users (nickname, password, mail) VALUES (:nickname, :password, :mail)');
  72.             $req->bindValue(':nickname', $user,               PDO::PARAM_STR);
  73.             $req->bindValue(':password', $this->crypt($pass), PDO::PARAM_STR);
  74.             $req->bindValue(':mail',     $mail,               PDO::PARAM_STR);
  75.             $req->execute();
  76.             return true;
  77.         }
  78.     }
  79.  
  80.     /*
  81.      * @name:  minRank()
  82.      * @param: $rank => Valeur de rank minimum
  83.      * @desc:  Retourne vrai si le rank du membre est supérieur ou égal au rank entré en paramètre
  84.      */
  85.     public function minRank($rank)
  86.     {
  87.         global $DB;
  88.         $req = $DB->prepare('SELECT * FROM users WHERE nickname=:nickname');
  89.         $req->bindValue(':nickname', $this->nickname, PDO::PARAM_STR);
  90.         $req->execute();
  91.         $fetch = $req->fetch(PDO::FETCH_ASSOC);
  92.  
  93.         // Si le rank de l'utilisateur est supérieur ou égal à celui entré comme paramètre
  94.         if($fetch['rank'] >= $rank)
  95.             return true;
  96.         else
  97.             return false;
  98.     }
  99.  
  100.     /*
  101.      * @name:  crypt()
  102.      * @param: $pass => Mot de passe à crypter
  103.      * @desc:  Retourne le mot de passe crypté (md5.sha1.md5(sha1))
  104.      */
  105.     private function crypt($pass)
  106.     {
  107.         return md5($pass).sha1($pass).md5(sha1($pass));
  108.     }
  109.  
  110.     /*
  111.      * @name:  setSession()
  112.      * @desc:  On enregistre les données membre dans la session
  113.      */
  114.     private function setSession()
  115.     {
  116.         $_SESSION['nickname'] = $this->nickname;
  117.         $_SESSION['password'] = $this->password;
  118.         $_SESSION['rank']     = $this->rank;
  119.         $_SESSION['mail']     = $this->mail;
  120.     }
  121.  
  122.     /*
  123.      * @name:  checkSession()
  124.      * @desc:  Si une session existe et est valide, on rentre ses données dans les données membre. Sinon, on détruit la session.
  125.      */
  126.     public function checkSession()
  127.     {
  128.         if(isset($_SESSION['nickname'], $_SESSION['password']))
  129.         {
  130.             global $DB;
  131.             $req = $DB->prepare('SELECT * FROM users WHERE nickname=:nickname AND password=:password AND mail=:mail');
  132.             $req->bindValue(':nickname', $_SESSION['nickname'], PDO::PARAM_STR);
  133.             $req->bindValue(':password', $_SESSION['password'], PDO::PARAM_STR);
  134.             $req->bindValue(':mail',     $_SESSION['mail'],     PDO::PARAM_STR);
  135.             $req->execute();
  136.  
  137.             if($req->rowCount() == 1)
  138.             {
  139.                 $this->nickname = $_SESSION['nickname'];
  140.                 $this->password = $_SESSION['password'];
  141.                 $this->rank     = $_SESSION['rank'];
  142.                 $this->mail     = $_SESSION['mail'];
  143.                 return true;
  144.             }
  145.             else
  146.             {
  147.                 session_destroy();
  148.                 return false;
  149.             }
  150.         }
  151.         return false;
  152.     }
  153.  
  154.  
  155.     /* --------------------------------------------------- *
  156.      *                                                     *
  157.      *                       GETTERS                       *
  158.      *                                                     *
  159.      * --------------------------------------------------- */
  160.  
  161.     /*
  162.      * @name:  getNickname()
  163.      * @desc:  Retourne le pseudo de l'utilisateur connecté
  164.      */
  165.     public function getNickname()
  166.     {
  167.         return $this->nickname;
  168.     }
  169.  
  170.     /*
  171.      * @name:  getMail()
  172.      * @desc:  Retourne l'adresse mail de l'utilisateur connecté
  173.      */
  174.     public function getMail()
  175.     {
  176.         return $this->mail;
  177.     }
  178.  
  179.     /*
  180.      * @name:  getJauge()
  181.      * @param: $jauge => Jauge ("courage", "curiosite", "gentillesse", "humour")
  182.      * @desc:  Retourne la valeur de la jauge demandée pour l'utilisateur
  183.      */
  184.     public function getJauge($jauge)
  185.     {
  186.         global $DB;
  187.         $jauge = 'jauge'.ucfirst($jauge);
  188.         $req = $DB->prepare("SELECT * FROM users WHERE nickname = :nickname");
  189.         $req->bindValue(':nickname', $this->nickname, PDO::PARAM_STR);
  190.         $req->execute();
  191.         $fetch = $req->fetch(PDO::FETCH_ASSOC);
  192.         return $fetch[$jauge];
  193.     }
  194.  
  195.     /*
  196.      * @name:  getSizeJauge()
  197.      * @param: $jauge => Nom de la jauge dont la taille est calculée
  198.      *         $max => Valeur max que prendra la jauge
  199.      *         $unit => Unité ("px" ou "%" par exemple)
  200.      * @desc:  Retourne la valeur d'une jauge en fonction d'une valeur maximale de jauge
  201.      */
  202.     public function getSizeJauge($jauge, $max, $unit)
  203.     {
  204.         $jauge = $this->getJauge($jauge);
  205.         $maxJauge = $this->getMaxJauge();
  206.         $calcul = $jauge/$maxJauge*$max;
  207.         return $calcul.$unit;
  208.     }
  209.     /*
  210.      * @name:  getMaxJauge()
  211.      * @desc:  Retourne la valeur max des jauges pour l'utilisateur
  212.      */
  213.     public function getMaxJauge()
  214.     {
  215.         $tab = array(
  216.             $this->getJauge('courage'),
  217.             $this->getJauge('curiosite'),
  218.             $this->getJauge('gentillesse'),
  219.             $this->getJauge('humour')
  220.         );
  221.         return max($tab);
  222.     }
  223. }
  224.  
  225. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement