непонятная проблема с куками, подскажите

M
На сайте с 20.08.2004
Offline
376
515

устанавливаю куки вот так

if (isset($_REQUEST[session_name()])) 
{
session_start();
setcookie("user_id", $_SESSION[user][user_id], mktime()+172800, "/");
setcookie("xyz", $_SESSION[user][user_id], mktime()+172800, "/");
setcookie("user_pwd", md5($_SESSION[user][user_pwd]."solt"), mktime()+172800, "/");
}

проверяю вот так

  if (!$_SESSION[user][user_id] && $_COOKIE[user_id])
{
$query = "SELECT user_id, user_nickname, user_email, user_pwd, user_av_path, user_reputation, user_level
FROM `user`
WHERE `user_id`='{$_COOKIE[user_id]}'";
$sql->query($query);
$rec = $sql->getRecord();


if (md5($rec[user_pwd]."solt") == $_COOKIE[user_pwd])
{
session_start();
$_SESSION['user'] = $rec;
}
}

в итоге, через , скажем два часа получаю вот это

(
[PHPSESSID] => 2f0661ec2594b8dbe95678921e256725
[user_pwd] => 39b73c305036b0e5ad2b96ea69a932e9
)

хотя должен вот это (такое после успешного логина)

(
[PHPSESSID] => 2f0661ec2594b8dbe95678921e256725
[user_id] => 1
[xyz] => 1
[user_pwd] => f23f9a59975b4305545663f1472b98ff
)

есть два вопроса

a. почему пропадают user_id и xyz, или почему не пропадает user_pwd.

специально сделал поле xyz для теста

б. почему при одинаковых sold md5 разный?

Спасибо.

отец сыночка, лапочки дочки и еще одного сыночка
[umka]
На сайте с 25.05.2008
Offline
456
#1

а.

Мне кажется, где-то они перезаписываются/сбрасываются.

Т.е. или сами куки сбрасываются (для этого попробуйте логировать всю работу с setcookie()),

или же только в массиве $_COOKIE. Т.е. можно сделать где-нибудь unset($_COOKIE) и массив после этого будет пустой, но куки на самом деле будут живые.

Вобщем, нужно внимательно проследить, что делают все функции setcookie и какие манипуляции происходят с массивом $_COOKIE.

б.

Для одинаковых строк md5 должен быть одинаковый. Видимо, строки всё-таки разные в него попадают.

Лог в помощь!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий