Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.56 KB | None | 0 0
  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2.  
  3. class Member {
  4.  
  5.     private $CI;
  6.     private $user=array();
  7.    
  8.     /**
  9.     * Constructeur
  10.     * Crée la classe et stocke l'instance de code Igniter pour les appels ultérieurs
  11.     *
  12.     * @todo Ajouter une verrification des lib session et database?
  13.     * @access public
  14.     * @return nothing
  15.     */
  16.  
  17.     public function __construct()
  18.     {
  19.         $this->CI =& get_instance();
  20.     }
  21.    
  22.     /**
  23.     * Connect
  24.     * Tente de connecter un utilisateur avec les données fournies
  25.     *
  26.     * @access public
  27.     * @param login
  28.     * @param password
  29.     * @return true/false
  30.     */
  31.    
  32.     public function connect($login, $password)
  33.     {
  34.         $sql='SELECT id, pseudo, IF(password=\''.$this->_encode_password($password).'\',1,0) AS correctpass FROM '.$this->CI->db->protect_identifiers('members', TRUE).' WHERE pseudo='.$this->CI->db->escape($login).' LIMIT 1;';
  35.         $query = $this->CI->db->query($sql);
  36.         if ($query->num_rows() == 1)
  37.         {
  38.             $row=$query->row_array();
  39.             if($row['correctpass']==1){
  40.                 $this->user=$row;
  41.                 $this->CI->session->set_userdata('user_id', $this->user['id']);
  42.                 return true;
  43.             }
  44.             else
  45.             {
  46.                 return false;
  47.             }
  48.         }
  49.         else
  50.         {
  51.             return false;
  52.         }
  53.     }
  54.    
  55.     /**
  56.     * Disonnect
  57.     * Tente de déconnecter l'utilisateur courrant
  58.     *
  59.     * @access public
  60.     * @return true/false
  61.     */
  62.    
  63.     public function disconnect()
  64.     {
  65.         return $this->CI->session->unset_userdata('user_id');
  66.     }
  67.    
  68.     /**
  69.     * is_connected
  70.     * Teste si l'user courrant est connecté ou non
  71.     *
  72.     * @access public
  73.     * @return true/false
  74.     */
  75.    
  76.     public function is_connected()
  77.     {
  78.         if($this->CI->session->userdata('user_id')===false)
  79.         {
  80.             return false;
  81.         }
  82.         else
  83.         {
  84.             return true;
  85.         }
  86.     }
  87.    
  88.     /**
  89.     * register
  90.     * Enregistre l'utilisateur en verrifiant les données
  91.     *
  92.     * @param username
  93.     * @param password
  94.     * @param email
  95.     * @access public
  96.     * @return true/false
  97.     */
  98.    
  99.     public function register($username, $password, $email)
  100.     {
  101.         $insertdata = array(
  102.             'pseudo' => $username ,
  103.             'password' => $this->_encode_password($password) ,
  104.             'email' => $email,
  105.             'registerdate' => time()
  106.         );
  107.         return $this->CI->db->insert('members', $insertdata);
  108.     }
  109.    
  110.     /**
  111.     * changePassword
  112.     * Change le mot de passe de l'utilisateur en controlant l'ancien
  113.     *
  114.     * @param id
  115.     * @param oldpassword
  116.     * @param newpassword
  117.     * @access public
  118.     * @return true/false
  119.     */
  120.    
  121.     public function changePassword($id, $oldpassword, $newpassword)
  122.     {
  123.         if($this->_is_password_correct($id, $oldpassword)){
  124.             $updatedata = array(
  125.                 'password' => $this->_encode_password($newpassword)
  126.             );
  127.             return $this->CI->db->update('members', $updatedata, 'id='.$id);
  128.         }
  129.         return false;
  130.     }
  131.    
  132.    
  133.     /**
  134.     * _is_username_used
  135.     * Verrifie si un username est valide
  136.     *
  137.     * @param username
  138.     * @access public
  139.     * @return true/false
  140.     */
  141.    
  142.     public function _is_username_used($username)
  143.     {
  144.         $sql='SELECT id FROM '.$this->CI->db->protect_identifiers('members', TRUE).' WHERE pseudo='.$this->CI->db->escape($username).' LIMIT 1;';
  145.         $query = $this->CI->db->query($sql);
  146.         if ($query->num_rows() == 0 )
  147.         {
  148.             return true;
  149.         }
  150.         else
  151.         {
  152.             return false;
  153.         }
  154.     }
  155.    
  156.     /**
  157.     * _is_email_used
  158.     * Verrifie si un email est utilisé ou non
  159.     *
  160.     * @param email
  161.     * @access public
  162.     * @return true/false
  163.     */
  164.    
  165.     public function _is_email_used($email)
  166.     {
  167.         $sql='SELECT id FROM '.$this->CI->db->protect_identifiers('members', TRUE).' WHERE email='.$this->CI->db->escape($email).' LIMIT 1;';
  168.         $query = $this->CI->db->query($sql);
  169.         if ($query->num_rows() == 0 )
  170.         {
  171.             return true;
  172.         }
  173.         else
  174.         {
  175.             return false;
  176.         }
  177.     }
  178.    
  179.     /**
  180.     * _is_password_correct
  181.     * Verrifie si le mot de passe est correct pour cet user
  182.     *
  183.     * @param id
  184.     * @param password
  185.     * @access public
  186.     * @return true/false
  187.     */
  188.    
  189.     public function _is_password_correct($id, $password)
  190.     {
  191.         $sql='SELECT IF(password=\''.$this->_encode_password($password).'\',1,0) AS correctpass FROM '.$this->CI->db->protect_identifiers('members', TRUE).' WHERE id='.$id.' LIMIT 1;';
  192.         $query = $this->CI->db->query($sql);
  193.         if ($query->num_rows() == 1)
  194.         {
  195.             $row=$query->row_array();
  196.             if($row['correctpass']==1){
  197.                 return true;
  198.             }
  199.         }
  200.         return false;
  201.     }
  202.    
  203.     /**
  204.     * _encode_password
  205.     * Encode le password en utilisant un salt
  206.     *
  207.     * @access public
  208.     * @param password
  209.     * @return encrypted password
  210.     */
  211.    
  212.     private function _encode_password($password)
  213.     {
  214.         return md5($password.$this->CI->config->item('encryption_key'));
  215.     }
  216.  
  217. }
  218.  
  219. /* End of file Member.php */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement