Проверьте, используется ли PHP SessionID?

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


person Mehmet Hazar Artuner    schedule 18.07.2011    source источник
comment
Почему вы не сохраняете данные в сеансе (где они будут автоматически очищаться при завершении сеанса)?   -  person Quentin    schedule 18.07.2011
comment
или если вы действительно хотите использовать базу данных - используйте для этого временные таблицы   -  person k102    schedule 18.07.2011
comment
возможный дубликат Проверьте, используется ли PHP session_id   -  person hakre    schedule 18.07.2011
comment
Связанный: stackoverflow.com/questions/520237/   -  person hakre    schedule 18.07.2011


Ответы (3)


Сохраните отметку времени последнего доступа и удалите те строки, время которых на X минут раньше текущего времени.

person Dan Grossman    schedule 18.07.2011

Вы можете назвать свою сессию с помощью session_name ([string $name]),

пример: session_name('myname'),

а затем просто проверьте, есть ли идентификатор сеанса для этого имени с помощью session_id ([string $id]),

пример:

if(session_id('myname') != "")
       echo session_id('myname');
         else
      //your code here
person Aleksandar    schedule 18.07.2011

есть ли простой способ проверить, используется ли идентификатор сеанса?

Если вы используете обработчик сеанса по умолчанию, проверьте, присутствует ли файл сеанса и был ли он изменен с момента time()-session_cache_expire().

Однако гораздо лучшим решением было бы использование обработчика сеанса, привязанного к базе данных. Это гораздо более гибко, когда вы пытаетесь просмотреть данные сеанса извне сеанса, вы можете просто выполнить простое соединение, чтобы найти совпадающие данные, но правильный способ решить проблему — реализовать код управления сеансом в обработчике сеанса ( т.е. удалять данные при удалении сессии)!

person symcbean    schedule 18.07.2011
comment
Большое спасибо за ответы, у меня есть хорошие идеи, большое спасибо :) - person Mehmet Hazar Artuner; 19.07.2011