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

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 часов идентификатор сесии для авторизованного пользователя не менялся.

Спасибо,
Ч.
 

Фанат

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

Для начала следует узнать - что такое сессия, и подходит ли она вообще для решения твоих задач.
 

tche

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

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

Фанат

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

tche

Новичок
сессия - это пока пользователь не закрыл браузер.
так и происходит

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

Alexandre

PHPПенсионер
создай собственный обработчик сессий и храни значения сессий в БД
 

tche

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

Фанат

oncle terrible
Команда форума
tche
скажи, ты хорошо понимаешь предложения, на которые отвечаешь?
Скажи, какая связь между моими словами
чтобы не приходилось авторизовываться вторично, используют куки
и тем, что ты на них ответил?
если сама сессия использует куки, то почему нельзя использовать ее идентификатор как уникальное значение?
потому, что сессия - это пока пользователь не закрыл браузер.

-~{}~ 10.03.06 15:23:

Alexandre
ты, как всегда, не в тему абсолютно
 

tche

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

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

Фанат

oncle terrible
Команда форума
в момент начала работы с броузером определяется переменная PHPSESSID, которая не должна изменяться до закрытия броузера, так?
нет, не так.
как опеределяются переменные, и что с ними происходит, читать здесь: PHP FAQ: Самые основы. Как работает PHP.

-~{}~ 10.03.06 16:38:

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

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

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

Что ты вообще за систему городишь? Зачем тебе это понадобилось?
 

tche

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

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

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

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

-~{}~ 10.03.06 16:58:

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

Фанат

oncle terrible
Команда форума
ну да.
ты счёл отсыл на танке за оскорбление - я тебя правильно понял?
 

tche

Новичок
ну да.
ты счёл отсыл на танке за оскорбление - я тебя правильно понял?
не правильно, но там я уже бывал, и не раз. хотя я еще раз это дело перечитал. просто я подумал, что так и не смогу донести свой вопрос.
 

Фанат

oncle terrible
Команда форума
Осталось ли высказывание
в момент начала работы с броузером определяется переменная PHPSESSID, которая не должна изменяться до закрытия броузера, так?
в прежней формулировке?
 
Сверху