Вы не зашли.
Главная » PHP » авторизация $_COOKIE
#111. tipsun Off (19)
Moderator
2012.07.23 00:12
Ok. Спс.
#112. tipsun Off (19)
Moderator
2012.07.26 14:02
Как-то так?
Код:
<?php
 
//DB//
$db DB::singleton();
//COOKIES//
$user = array();
if (@$_COOKIE[INI_COOKIE_NAME]) {
    // INDEX KEY `cookie_id`
    $qt 'SELECT * '
        'FROM `users` '
        'WHERE `users`.`cookie_id` = ? '
        'LIMIT 1;';
    
    $args = array($_COOKIE[INI_COOKIE_NAME]);
    
    $q $db->prepare($qt);
    // Fixed
    if ($q and $q->execute($args) and $q->rowCount()) {
        
        $user $q->fetch();
        
        if ($user['cookie_timestamp'] < $_SERVER['REQUEST_TIME']) {
            
            $_COOKIE[INI_COOKIE_NAME] = md5(uniqid());
            
            $qt 'UPDATE `users` '
                'SET `users`.`cookie_timestamp` = ?, '
                '`users`.`cookie_id` = ? '
                'WHERE `users`.`user_id` = ? '
                'LIMIT 1;';
            
            $args = array($_SERVER['REQUEST_TIME'] + INI_COOKIE_LIFETIME,
                          $_COOKIE[INI_COOKIE_NAME],
                          $user['user_id']);
            
            if ($db->prepare($qt)->execute($args)) {
                
                setcookie(INI_COOKIE_NAME,
                          $_COOKIE[INI_COOKIE_NAME],
                          INI_COOKIE_EXPIRE,
                          INI_COOKIE_PATH,
                          INI_COOKIE_DOMAIN,
                          INI_COOKIE_SECURE,
                          INI_COOKIE_HTTPONLY);
            }
        }
    }
    else {
        
        setcookie(INI_COOKIE_NAME,
                  null,
                  0,
                  INI_COOKIE_PATH,
                  INI_COOKIE_DOMAIN,
                  INI_COOKIE_SECURE,
                  INI_COOKIE_HTTPONLY);
        
        unset($_COOKIE[INI_COOKIE_NAME]);
    }
}
Отредактировано tipsun (2012.07.27 18:06)
#113. Gemorroj Off (107)
Administrator
2012.07.26 15:03
$q в пером запросе тоже проверяй
#114. tipsun Off (19)
Moderator
2012.07.26 15:03
Так вроде проверяется.
Код:
<?php
 
$q $db->prepare($qt);
    
    if ($q->execute($args) and $q->rowCount()) {}
#115. Gemorroj Off (107)
Administrator
2012.07.26 19:07
Код:
<?php
if ($q && $q->execute($args) and $q->rowCount()) {}
Отредактировано tipsun (2012.07.27 04:04)
#116. tipsun Off (19)
Moderator
2012.07.26 19:07
Ого.
Ну да, логично. prepare().
Отредактировано tipsun (2012.07.26 19:07)
#117. tipsun Off (19)
Moderator
2012.07.27 22:10
Я решил fetch() тоже не обременять.
Код:
<?php
    if ($q and
        $q->execute($args) and
        $q->rowCount() and
        $user $q->fetch() and
        // гулять так гулять.
        $user['cookie_timestamp'] < $_SERVER['REQUEST_TIME']) {
        
        $_COOKIE[INI_COOKIE_NAME] = md5(uniqid());
        //...
    }
Отредактировано tipsun (2012.07.27 22:10)
#118. tipsun Off (19)
Moderator
2012.07.30 20:08
habrahabr.ru/post/13726 - хорошая статья.
Добавлено спустя   4 минуты  9 секунд:
- Поле Cookie_timestamp наверно лишнее. Можно и auth_timestamp, время последней авторизации, использовать.
- Привязку к ип попробую прикрутить
- Еще забыл проверять remember - при регенерации печенья чтоб нужный срок действия задать.
#119. Gemorroj Off (107)
Administrator
2012.07.30 21:09
tipsun, 2007 год)
#120. tipsun Off (19)
Moderator
2012.07.30 22:10
Да..., не умею я пользоваться поисковиком. smile
Страниц: 110 11 12 Все
Главная
WEB
PunBB Mod v0.6.2
0.018 s