ОБСУЖДЕНИЕ

Юзверь класс

46 сообщений1 просмотровОткрыта
#1
Всем привет, не падаем в обмарок) Оптимизаторы, советуем, указываем на ошибки))
P.S выё.юсь :)

PHP

<?php

class user {

    public static
        $data = array (),
        $messages = array ();
        
    private
        $DBHandle;
    
    public function isLoggedIn() {

        $this->DBHandle = new DBHandle();

        if ($_COOKIE['user_data']) {
            
            // cookies
            $data = unserialize(
                stripslashes($_COOKIE['user_data'])
            );

            $query = $this->DBHandle->query("SELECT * FROM `user` WHERE (`id`=?) AND (`password`=?)", array (intval($data['id']), base64_decode($data['password'])));
            if ($query->rowCount()!=0) {

                self::$data = $query->fetch();
                if (self::$data['hash'] == $data['hash'])
                {
                    return true;
                }

            }
            
        }
        
    }

    public function login($email, $password) {
    
        if (!self::isLoggedIn()) {
        
            $query = $this->DBHandle->query("SELECT `id`, `email`, `password`, `hash` FROM `user` WHERE (`email`=?) AND (`password`=?)", array ($email, $password));
            if ($query->rowCount()!=0) {
                // 
                $data = $query->fetch();
                
                // hash
                $hash = '';
                
                // 
                $expiry = time()+(86400*365);
                
                $this->DBHandle->query("UPDATE `user` SET `hash`=? WHERE (`id`=?)", array ($hash, $data['id']));
                setcookie('user_data', serialize(
                    array (
                        'id' => $data['id'],
                        'password' => base64_encode($data['password']),
                        'hash' => $hash
                    )
                ),
                $expiry, '/');
                
                return true;

            }
            else
                self::$messages[] = 'Ошибочные данные';
        
        }
        else
            self::$messages[] = 'Вы уже авторизированы!';
        
    }
    
    public function logout() {
    
        if (self::isLoggedIn()) {
            setcookie('user_data', null, 0, '/');
            return true;
        }
        else
            self::$messages[] = 'Вы не авторизированы';
    
    }
    
}


#2
Чтобы не было вопросов что к чему:
Controller
PHP

<?php

<?php

class controller_user extends controller {

    function __construct() {
        parent::__construct('user');
    }
    
    function action_login() {

        if (user::isLoggedIn()) {
            header('location: /');
            exit;
        }
        
        $data = array ();
        if ($_POST['email'] && $_POST['password']) {
        
            if (user::login($_POST['email'], $_POST['password'])) {
                header('location: /');
                exit;
            }
            else
                $data = array_merge($data, array (
                    'messages' => user::$messages
                ));
            
        }
        
        $this->view->render('Вход', 'user/login', $data);
    }

    function action_logout() {
        
        if (!user::isLoggedIn()) {
            header('location: /');
            exit;
        }
        
        if ($_POST['confirm']) {
           
            user::logout();
            header('location: /');
        
        }
        
        $this->view->render('Выход', 'user/logout');
    }
    
    function action_registration() {

        if (user::isLoggedIn()) {
            header('location: /');
            exit;
        }
        
        $this->view->render('Регистрация', 'user/registration');
    
    }



}

#3
Это что?)
#4
Пользовательский класс и сам функционал его использования)
#5
3KZO, Чесно я много что забыл, пхп год назад юзал) так что я хз что это)
#6
если ты этого не понимаешь, то ты не кодер))
#7
3KZO, Я и не говорю что я кодер) я пишу по примерам) я год назад бросил все это на старых мастерах я был ByTera людям много чем помог, писал не большие проэкты)
#8
ясно)) а чем помогал?)
#9
3KZO, Чем мог, что знал) в основном по мелочам)
#10
кстате простенький код
#11
ну наконец-то)
#12
немножко обновил код
PHP

<?php

class user {
    public static
        $data = array (),
        $messages = array ();
    private
        $DBHandle;
    public function isLoggedIn() {
        $this->DBHandle = new DBHandle();
        if ($_COOKIE['user_data']) {
            $data = unserialize(
                stripslashes($_COOKIE['user_data'])
            );
            $query = $this->DBHandle->query("SELECT * FROM `user` WHERE (`id`=?) AND (`password`=?)", array (intval($data['id']), base64_decode($data['password'])));
            if ($query->rowCount()!=0) {
                self::$data = $query->fetch();
                if (self::$data['hash'] == $data['hash']) {
                    $this->DBHandle->query("UPDATE `user` SET `last_activity`=? WHERE (`id`=?)", array (time(), self::$data['id']));
                    return true;
                }
            }
        }
        else
            self::$messages[] = '';
    }
    public function getLogIn($username, $password) {
        if (!self::isLoggedIn()) {
            $query = $this->DBHandle->query("SELECT * FROM `user` WHERE (`email`=?) AND (`password`=?)", array ($username, $password));
            if ($query->rowCount()!=0) {
                $data = $query->fetch();
                $hash = '';
                $this->DBHandle->query("UPDATE `user` SET `hash`=? WHERE (`id`=?)", array ($hash, $data['id']));
                setcookie('user_data', serialize(array (
                    'id' => $data['id'],
                    'password' => base64_encode($data['password']),
                    'hash' => $hash
                )), (time()+(86400*365)), '/');
                return true;
            }
            else
                self::$messages[] = '';
        }
    }
    public function getLogOut() {
        if (self::isLoggedIn())
            setcookie('user_data', null, 0, '/');
    }

}


#13
3KZO, можешь объяснить,в чём минусы кода ниже,а в чём плюсы твоего кода?

PHP

if($_GET['login'] == '' and $_GET['password'] == ''){
    $login = htmlspecialchars(strip_tags($_POST['login']));
    $password = htmlspecialchars(strip_tags($_POST['password']));
}else{
    $login = htmlspecialchars(strip_tags($_GET['login']));
    $password = htmlspecialchars(strip_tags($_GET['password']));
}


if($login == '' or $password == ''){
    setsession('autherror', '<font color=red>Ошибка авторизации</font>');
    header("Location: /index");
    exit;
}

$hash = md5(md5($password));

$q = mysql_query("SELECT * FROM `user` WHERE `login`='$login'");
$e = mysql_num_rows($q);
if($e == '0'){
    setsession('autherror', '<font color=red>Ошибка авторизации</font>');
    header('Location: /index');
    exit;
}
$w = mysql_fetch_assoc($q);

if($hash !== $w['password']){
    setsession('autherror', '<font color=red>Ошибка авторизации</font>');
    header('Location: /index');
    exit;
}

$_SESSION['uid'] = $w['id'];

header('Location: /main');
exit;

#14
ООП, PDO, MVC.
#15
3KZO, я не про это,минусы в плане безопасности/быстродействия,ибо смысл велосипеда?
#16
вообще мвс это и есть простота и удобство, к тому же безопасность+PDO быстрей работает чем mysql;
#17
не юзаю PDO, MVC :(
Так бы поковырял .лол.
#18
бросай быдлокодинг)
#19
3KZO, pdo это сила
#20
да нет) это универсальный класс для работы с данными) а пдо и майскуль - это сила)
Страница 1 из 3 · Всего записей: 46