Security Teams



:::
  Ответ в темуСоздание новой темыСоздание опроса

> Просто интересный прием при работе с сессиями
drmist
Дата 12.07.2007 - 09:23
Цитировать сообщение
Offline



Professional
*****

Профиль
Группа: -users-
Сообщений: 1165
Пользователь №: 222
Регистрация: 14.04.2005



Рейтинг:
(0%) -----


В связи с неописуемой фичастостью PHP переменные $id и $_SESSION["id"] считаются в нем одним и тем же сразу после обращения к $_SESSION["id"] или вызова session_register("id").

Вот недавно: классу User приходилось работать с сессиями, а скрипту, который использовал этот класс, с переменной $id. Возникала очень веселая ситуация, когда пользователь высылал себе email для востановления пароля и сразу после этого оказывался залогинившимся. Это происходило из-за того, что скрипт говорил что-то вроде

$id = $User->GetId($name, $email);
$Mailer->SendCode($id, ...);

из-за первой строчки изменялось значение переменной $_SESSION["id"], а так как ненулевое значение этой переменной означает, что пользователь залогинился, скрипт перебрасывал его в панель управления профилем smile.gif

Проблема решается очень просто - достаточно всем переменным, хронящимся в сессии, прибавлять к имени точку (например $_SESSION[".id"]), ибо врятли мы сможем объявить переменную с таким именем smile.gif

Вот собственное я и порисовался smile.gif Может, пользуясь случаем, кто-то вспомнит другое решение сабжа?


--------------------
Когда нельзя еще больше хочется...
PMСайт пользователя
Top

Опции темы Ответ в темуСоздание новой темыСоздание опроса