Вы не зашли.
Главная » PHP » авторизация $_COOKIE
#91. tipsun Off (19)
Moderator
2012.06.29 17:05
Хм. А что мне мешает сделать все без сессии?
В базе есть поле для cookie_id по нему пусть и получают доспуп пользователи. Какого фига сессия нужна там? smile
Чем сессия будет каждый раз open+unserialize лучше уж запрос в базу.
Может понадобиться обычная сессия для captcha только наверно.
#92. tipsun Off (19)
Moderator
2012.06.29 18:06
Либо у меня горячка, либо озарение простых вещей smile
Хотя если файл сессии сохранился, то в принципе все будет быстро...
Код:
<?php
 
//Набросок.
 
//+ SESSION//
//! KEY `session_id`
 
if (isset($_COOKIE[SESSION_NAME])) {
/*
    session_name(SESSION_NAME);
    session_start();
    
    if (! isset($_SESSION[SESSION_NAME])) {
        
        $_SESSION = array();
*/
        $result $db->prepare("SELECT `users`.`user_id`, `users`.`user_title`, `users`.`user_sex`, `users`.`user_name` FROM `users` WHERE `users`.`session_id` = ? AND `users`.`session_expire` > NOW() LIMIT 1;");
        $result->execute(array($_COOKIE[SESSION_NAME]));
        
        if ($result->rowCount()) {
/*
            $_SESSION[SESSION_NAME] = true;
            session_set_cookie_params(SESSION_EXPIRE,
                                      SESSION_PATH,
                                      SESSION_DOMAIN,
                                      SESSION_SECURE,
                                      SESSION_HTTPONLY);
            session_regenerate_id(true);
            $_SESSION += $result->fetch();
*/
            $user $result->fetch();
            /*$result = $db->prepare("UPDATE `users` SET `users`.`session_expire` = NOW() + INTERVAL '" . SESSION_EXPIRE . "' SECOND, `users`.`session_id` = :new WHERE `users`.`session_id` = :old LIMIT 1;");
            $result->execute(array(':old' => $_COOKIE[SESSION_NAME],
                                   ':new' => $_COOKIE[SESSION_NAME] = session_id()));*/
        }
        else {
            
            setcookie(SESSION_NAME,
                      null//Session value.
                      0,    //Session expire.
                      SESSION_PATH,
                      SESSION_DOMAIN,
                      SESSION_SECURE,
                      SESSION_HTTPONLY);
/*          unset($_COOKIE[SESSION_NAME], $_SESSION);
            session_destroy();
*/
        }
  //}
}
//- SESSION//
Добавлено спустя   1 минуту  56 секунд:
Отредактировано tipsun (2012.06.29 18:06)
#93. tipsun Off (19)
Moderator
2012.06.29 18:06
Cookie сгенерировать и засунуть в базу. Срок годности 3 дня, допустим. Или как-то так.
#94. tipsun Off (19)
Moderator
2012.06.30 00:12
Да, на этом форуме вроде, как я посмотрел, такая же схема.
Отредактировано tipsun (2012.06.30 00:12)
#95. tipsun Off (19)
Moderator
2012.06.30 17:05
Если без срока в базе, то можно будет взломать, нет?
Зато намного быстрее работать будет.
#96. WapStyle Off (3)
Участник
2012.07.03 21:09
Выдавай в куки временный хеш...например если чел авторизировался ему в куки хеш..вышел кеш заменяется на любой случайный...если не дурак поймёш
Отредактировано WapStyle (2012.07.03 21:09)
#97. tipsun Off (19)
Moderator
2012.07.03 23:11
WapStyle, спасибо за идею. smile
Добавлено спустя   8 минут  20 секунд:
Так.
У меня, типа smile , есть отдельная таблица с активными/онлайн. Может сделать раздельно?
Там у меня записи не удаляются. (REPLACE).
Можно, в принципе зачищать поля с id=0 т.к. гости его не имеют.
Значит вполне возможен вариант с проверкой юзеров, которые не подавали активности, скажем, 20 часов.

Код:
<?php
 
//+ ACTIVITY//
$qt 'REPLACE `activity` '
    "SET `activity`.`active_id` = '" . ((int) @$user['id']) . "', "
    '`activity`.`active_ip` = ?, '
    '`activity`.`active_browser` = ?, '
    "`activity`.`active_point` = NOW() + INTERVAL '" $ini['activityExpire'] . "' SECOND;";
 
$db->prepare($qt)
   ->execute(array($_SERVER['REMOTE_ADDR'],
                   $_SERVER['HTTP_USER_AGENT']));
//- ACTIVITY//
 
/*
в $ini у меня типа настройки стандартные или замещеные с базы.
Сейчас подумал, что типа зачем вытаскивать настройки, когда наверно там же в запросе можно обратиться к таблице с настройками. Или такого рода настройки вообще в константу? ХЗ.
*/
Отредактировано tipsun (2012.07.03 23:11)
#98. tipsun Off (19)
Moderator
2012.07.03 23:11
Потом еще подумаю.
#99. tipsun Off (19)
Moderator
2012.07.06 14:02
WapStyle, да. Очень хорошее решение.
Запланировать каждую ночь 1 проверку.
У кого есть отметка запомнить, оставлять куку. Другим очищать в базе поле кука_ид. smile
#100. tipsun Off (19)
Moderator
2012.07.06 17:05
Это уже раздел cron наверно. Надо будет почитать что и как там.
Страниц: 18 9 10 11 12 Все
Главная
WEB
PunBB Mod v0.6.2
0.016 s