Если делать сохранение даных о пользователе в куках, то при логауте: PHP: setcookie('login', '', 0, "/"); setcookie('password', '', 0, "/"); if (isset($_SESSION['user_id'])) unset($_SESSION['user_id']); приходится делать операцию дважды, чтобы в текущей сессии пользователь точно вышел. Хотя логаут реально происходит, но пользователя текущей сессии не "отпускает". Если закрыть браузер и войти снова, то пользователь уже не авторизован. С чем может быть связан это глюк? Может куки всетаки еще живут некоторое время?
а вы проверяете авторизованность пользователя через куку? или у вас сессионные данные не разрушаются? Roman Koff Может куки всетаки еще живут некоторое время? сколько живут куки вас вобще не должно колебать. кука это текстовичек на компе у посетителя. Кукам веры нет. В куках можно хранить любимый цвет пользователя. не более того. Ну или какое-то рандомное число, которое для вас что-то значит, но для всех остальных - загадошный мусор.
Всеравно не отпускает. Если логиниться без ремембера, то все работает сразу, с ремембером -- два раза надо жать. PHP: $PASSWORD_SALT = 'blablabla'; $ADMIN_LOGIN = 'admin'; $ADMIN_PASSWORD = 'xxx'; // вход пользователя function UserLogin($lgn, $pwd, $rmb = false) { if (testUserLP($lgn, $pwd)) { if ($rmb == true) { $time = 86400; // на 24 часа setcookie('login', $lgn, time() + $time, "/"); setcookie('password', $pwd, time() + $time, "/"); } $_SESSION['user_id'] = 1; return true; } else { return false; } } // выход пользователя function UserLogout() { setcookie('login', '', 0, "/"); setcookie('password', '', 0, "/"); if (isset($_SESSION['user_id'])) unset($_SESSION['user_id']); header('Location: ' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); return; } // кэш пароля function getPasswordHash($pwd) { global $PASSWORD_SALT; return md5(md5($pwd) . $PASSWORD_SALT); } // проверка логина и пароля function testUserLP($lgn, $pwd) { global $ADMIN_LOGIN; global $ADMIN_PASSWORD; return ($lgn == $ADMIN_LOGIN) && (getPasswordHash($pwd) == $ADMIN_PASSWORD); }
предлагаю такую систему: в куках сохранять логин и рандомное число знаков на 12-16. в бд делать запись логин-число. несколько таких записей для того, чтобы чел мог запоминаться на разных компах если надо. когда чел приходит - смотреть куку и смотреть если такая пара логин-число. Если есть - он в деле. =) если чел выходит - удалять эту запись. таким образом, даже если запись в куках сохранится, то все равно придется логиниться заново, если в бд нет такой пары.