А может идентификатор сессии измениться во время сессии?

  • Автор темы Автор темы tche
  • Дата начала Дата начала

tche

Новичок
А может идентификатор сессии измениться во время сессии?

у меня след. установки в php.ini

session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 86400
session.cache_expire = 1440

люди работают в БД, а редактируемые строки в БД привязаны к идентификатору, по идее в течение раб. дня сессия должна жить и ее идентификатор не меняться, но иногда на некоторых машинах она почему-то слетает, то есть меняется идентификатор.

Стоит ли привязываться не к "родному", а к собственному идентификатору (но вариант типа user_name + IP не подходит, так как люди иногда сидят под одним аккаунтом и под одним IP)? вариант типа md5(microtime()) может тоже измениться, если меняется идентификатор сессии.

Вообщем, вопрос, как сделать так, чтобы в течение 10-12 часов идентификатор сесии для авторизованного пользователя не менялся.

Спасибо,
Ч.
 
по идее в течение раб. дня сессия должна жить
по какой идее?
Стоит ли привязываться не к "родному", а к собственному идентификатору
вообще ни к какому идентификатору привязываться не стоит.

Для начала следует узнать - что такое сессия, и подходит ли она вообще для решения твоих задач.
 
я старался сделать такие установки в php.ini, чтобы сессия жила в течение суток, то есть юзеру не нужно авторизоваться вторично (если не закроют броузер или разлогинятся)

при этом нужно отличать разных людей, вошедших под одним именем и одним IP.
 
сессия - это пока пользователь не закрыл браузер.
чтобы не приходилось авторизовываться вторично, используют куки.
к твоей задаче сессии не имеют отношения.
 
сессия - это пока пользователь не закрыл браузер.
так и происходит

чтобы не приходилось авторизовываться вторично, используют куки
если сама сессия использует куки, то почему нельзя использовать ее идентификатор как уникальное значение?
 
создай собственный обработчик сессий и храни значения сессий в БД
 
Alexandre - какая разница в данном случае, где хранить, я хочу лишь одного, чтобы идентификатор (а значит и прочие переменные, определенные в момент открытия сессии)не переопределялись во время работы. Для этого я просил проверить мои настройки php.ini.
 
tche
скажи, ты хорошо понимаешь предложения, на которые отвечаешь?
Скажи, какая связь между моими словами
чтобы не приходилось авторизовываться вторично, используют куки
и тем, что ты на них ответил?
если сама сессия использует куки, то почему нельзя использовать ее идентификатор как уникальное значение?
потому, что сессия - это пока пользователь не закрыл браузер.

-~{}~ 10.03.06 15:23:

Alexandre
ты, как всегда, не в тему абсолютно
 
я по крайней мере пытаюсь понять, пока не получается. Возможно я не могу точно выразить свои мысли, это бывает с людьми, тогда или постарайтесь меня понять, или закроем топик и не будем терять время.

Я хочу понять следующее: в момент начала работы с броузером определяется переменная PHPSESSID, которая не должна изменяться до закрытия броузера, так? Тем не менее если пользователь "отойдет на минуточку" не закрывая броузер, то есть вероятность, что сессия завершится и PHPSESSID переопределится при его послед. действиях.
Так вот мне бы хотелось, чтобы в течение суток PHPSESSID не переопределялся, даже если пользователь не будет клюкать в браузер, но не закроет его. Для этого есть настройки в php.ini.
 
в момент начала работы с броузером определяется переменная PHPSESSID, которая не должна изменяться до закрытия броузера, так?
нет, не так.
как опеределяются переменные, и что с ними происходит, читать здесь: PHP FAQ: Самые основы. Как работает PHP.

-~{}~ 10.03.06 16:38:

Для этого есть настройки в php.ini.
нет
для этого нет настроек в php.ini

если ты хочешь решить ЭТУ проблему, то для начала тебе надо заняться расследованием - в какой момент меняется идентификатор, отчего это происходит

Но лучше бы тебе сделать отдельный механизм, не привязываясь к идентификатору сессии.

Что ты вообще за систему городишь? Зачем тебе это понадобилось?
 
Что ты вообще за систему городишь? Зачем тебе это понадобилось?
Редактирование БД, много пользователей одновременно что-то меняют. Они открывают запись и начинают "думать", что бы такое поменять в этой записи, могут долго думать. С момента, когда они открыли запись на редактирование, эта запись должна быть заблокирована для других пользователей.
Для этого я в спец. поле строки таблицы БД заношу идентификатор пользователя.

В момент сохранения (окончания редактирования) я проверяю, действительно ли этот вот пользователь открыл вот эту запись на редактирование некоторое время назад, то есть совпадает ли значение поля с идентификатором с реальным идентификатором пользователя.

В качестве идентификатора мне показалось логичным использовать PHPSESSID, благо он уникальный для каждого пользователя, даже если двое залогинились под одним именем.

Далее выясняется, что иногда PHPSESSID меняется в промежуток времени между тем, как пользователь открыл запись на редактирование, подумал и сохранил ее.

-~{}~ 10.03.06 16:58:

хех.
на вопросы, значит, отвечать не хочется?
Я это написал, когда увидел твой отсыл на на_танке, а потом ты уже задал вопрос зачем все это нужно
(-~{}~ 10.03.06 16:38:).
 
ну да.
ты счёл отсыл на танке за оскорбление - я тебя правильно понял?
 
ну да.
ты счёл отсыл на танке за оскорбление - я тебя правильно понял?
не правильно, но там я уже бывал, и не раз. хотя я еще раз это дело перечитал. просто я подумал, что так и не смогу донести свой вопрос.
 
Осталось ли высказывание
в момент начала работы с броузером определяется переменная PHPSESSID, которая не должна изменяться до закрытия броузера, так?
в прежней формулировке?
 
Сверху