@hooligan377

Проверка cookie?

Сижу битый час над одним и тем же вопросом.

Есть таблица user (в ней хранятся данные пользователя для аутентификации):
-- id -- login -- password --

И таблица session (в ней хранятся данные о человеке и ключи доступа к закрытым страницам):
-- id -- uid -- key -- token -- ip -- agent -- time --


---- Суть аутентификации:
Вводим логин и пароль, если все верно перекидываем на страницу авторизации, где тем временем происходит генерация ключей (key and token) доступа для id пользователя и записываются данные в бд: ip, agent, uid (id пользователя), time (текущее время авторизации), ну и сами ключи: key and token

---
Есть файл проверки кук: cookie.php, примерное содержимое:

session_name('blabla');
session_start();
ob_start();
// Если есть куки:
if(isset($_COOKIE['id']) and isset($_COOKIE['key']) and isset($_COOKIE['token'])) {

// Делаем запрос к таблице с пользователями:
$user = sql("SELECT * FROM user WHERE id = $_COOKIE['id']");
// Проверяем если есть пользователь

if(isset($user['id'])){

// Делаем запрос к таблице с сессиями
$session = sql("SELECT * FROM session WHERE uid = $user['id']");

// и теперь проверяем (И ВОТ ЗДЕСЬ КРОЕТСЯ ДЬЯВОЛ)
if($session['uid'] != $_COOKIE['id'] or $session['key'] != $_COOKIE['key'] or $session['token'] != $_COOKIE['token']){

// и если ни один из ключей не совпадает с теми что в базе, то мы сбросим все куки
                setcookie('key', '', time()-86400*31, '/');
		setcookie('token', '', time()-86400*31, '/');
		setcookie('id', '', time()-86400*31, '/');
}

}}


Проблема в том, что при изменении кук процесс удаления кук не происходит и почему, я понять не могу. Помогите найти проблему.

PS: Не обращайте внимания на запросы, тут проблема с условиями, а какая именно я не не замечаю
  • Вопрос задан
  • 261 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы