[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: смена куки при смене логина и(или) пароля
quickxyan
пишу регу и авторизацию с куками и сессиями. вышла такая беда, мол при авторизации я записываю свои куки, а потом на какой-то странице есть такая штука как смена пароля и логина.
но, если я меняю либо одно либо другое, то сохраненные куки уже никуда не годяться. пробую переустановить их. в браузере они меняються, но при авторизации все равно старые? кто знает в чем дело???


//логин и пароль уже поменяны и я их достаю из БД $sql = "SELECT `email`, `pass` FROM `user` WHERE `id` = '".$id."'";
$row = query($sql); //самописная ф-ия которая фозвращает mysql_fetch_assoc($result)
$email = $row['email'];
$pass = $row['pass'];

$cook = md5($email.$pass); //делаю куки с логином+пароль
setcookie("cook",$cook); //устанавливаю куки



может, я что то не правильно делаю?прошу совета или подсказки.


а еще есть прблема с сессией
при смене логина или пароля, переменная $_SESSION['login'], $_SESSION['pass'] уже отличаються от настоящих так как я их поменял. потому я их переписываю на новые значения и все работает, но если обновить ту самую страницу 2 раза, то меня принимают за незареганого, а если пойти поклацать по ссылкам, то все норм?
может сделать редирект на какую-то левую страницу - типо бла-бла-бла вы успешно поменяли пароль и логин и ссылки по сайту или как. ниже код.


if(!empty($oldmail) && !empty($newmail)) //сравниваем старый и новый имейл
{
if($oldmail == $newmail) echo '<br>Старый и новый E-mail совпадают';
else
{
$sql = "SELECT `id` FROM `user` WHERE `email` = '".$oldmail."'";
$row = query($sql);

$id = $row['id'];
$sql = "UPDATE `user` SET `email` = '".$newmail."' WHERE `id` = '".$id."'";
query($sql);
$_SESSION['email'] = $newmail; //переустанавливаю переменную на новую
echo '<br>Вы успешно поменяли E-mail';
}
}





хух, вобщем как-то много написал, но надеюсь ясно. спасибо за внимание



Спустя 12 часов, 20 минут, 13 секунд (23.01.2011 - 13:01) alex12060 написал(а):
Чтобы удалить куки, надо либо вставить в них пустое значение, либо просто делать unset();
Это при выходе)


$sql = "SELECT `id` FROM `user` WHERE `email` = '".$oldmail."'";
$row = query($sql);

$id = $row['id'];
$sql = "UPDATE `user` SET `email` = '".$newmail."' WHERE `id` = '".$id."'";
query($sql);


Что то тут совсем страшно(

У тебя две одинаковые переменные участвуют в 2 запросах.
Просто, я так делаю, когда кто-то что-то меняет, делаю выход и автологин.

Спустя 59 минут, 36 секунд (23.01.2011 - 14:01) quickxyan написал(а):
спасибо, вернусь буду пробовать с автологином)

Спустя 2 часа, 17 минут, 38 секунд (23.01.2011 - 16:18) quickxyan написал(а):
да, впринципе первый запрос можно вообще удалить так как id у меня есть в сессии.


_____________
печатаю со скоростью 320 минут в знак...

плюсуем карму не стесняемся
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.