ОБСУЖДЕНИЕ

ТОП | [PHP] Программируем на OOP

22 сообщений1 просмотровОткрыта
#21
3KZO, А как же переход к объявлению функции, подсказки, без них никуда
#22
Мои небольшой класс для пользователя.

PHP
<?php

class User
{
    
    private $dbhandler;
    
    public function __construct ()
    {
        
        $this->dbhandler = dbhandler::getInstance ();
        
        
        
        
        $this->authenticate ();
        
    }
    
    /**
     * Проверка подлинности
     */
    private function authenticate ()
    {
        
        if (isset ($_SESSION['is_logged']))
        {
            
            try {
                
                $_SESSION['id'] = (int) $_SESSION['id'];
                $_SESSION['password'] = addslashes (trim ($_SESSION['password']));
                
                if (!isset ($_SESSION['password']))
                    throw new Exception ('Пароль не был указан.');
                else {
                    
                    $user = $this->findById ($_SESSION['id']);
                    
                    // Проверка идентификатора
                    if (!isset ($user))
                        throw new Exception ('Пользователь с таким id (идентификатором) не найден.');
                    else {
                    
                        // Проверка пароля
                        if ($user['password']!=$_SESSION['password'])
                            throw new Exception ('Пароль не прошел проверку.');
                        else {
                            
                            // Проводимые манипуляции с пользователем
                            // 
                            // 
                            // 
                            
                        }
                        
                    }
                    
                }
                
            } catch (Exception $e) {
                
                // Выход
                $this->logout ();
                
                // 
                // 
                // 
                
            }            
            
        }
        
    }
    
    /** Получить данные пользователя по id (идентификатору)
     * 
     * @param int $id идентификатор
     * @return array массив с данными 
     */
    public function findById ( $id )
    {
        
        $q = $this->dbhandler->prepare ('SELECT * FROM `user` WHERE (`id`=?)');
        $q ->execute (array ($id));
        if ($q->rowCount ()!=0) {
            
            $user = $q->fetch ();
            
            return $user;
            
        }
        
    }

    /**
     * Вход
     *
     * @param string $username имя пользователя
     * @param string $password пароль
     */
    function logIn ( $username, $password )
    {
        
        $q=$this->dbhandler->prepare ('SELECT `id`,`password` FROM `user` WHERE (`username`=?) AND (`password`=?)');
        $q->execute (array ($username, $password));
        if ($q->rowCount ()!=0) {
            
            $user = $q->fetch ();
            
            $_SESSION['id'] = $user['id'];
            $_SESSION['password'] = $user['password'];
            $_SESSION['is_logged'] = 1;
            
        }
        
    }
    
    /**
     * Выход
     */
    function logout ()
    {
        
        unset ($_SESSION['id'], $_SESSION['password'], $_SESSION['is_logged']);
        
    }

}

Страница 2 из 2 · Всего записей: 22