Возможно ли сбросить одну переменную из другой сессии? - PullRequest
0 голосов
/ 27 января 2012

Если я хочу сбросить одну переменную в текущем сеансе пользователя, я могу использовать команду unset($_SESSION['something']).

Возможно ли сбросить только одну переменную из другого сеанса, если я знаю значение PHPSESSID (могу ли я сделать это без изменения текущего сеанса пользователя)? Я хотел бы проверить, если сессия PHPSESSID все еще существует, если существует, то unset($_SESSION['something']) выбранного PHPSESSID.

Ответы [ 3 ]

2 голосов
/ 27 января 2012

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

Да, это возможно, и вам нужно знать идентификатор сеанса для этого сеансакак сбросить переменную / значение с.

Могу ли я сделать это без изменения текущего сеанса пользователя?

Если вы хотите сделать это с помощью стандартных функций PHP, это невозможно без переключения сеанса.Со сторонними библиотеками вы можете сделать это без переключения сеанса.

Я хотел бы проверить, существует ли еще сеанс PHPSESSID, если существует, то unset($_SESSION['something']) выбранного PHPSESSID.

Это очень похоже на ответ на php уничтожить сеанс, который не является текущим сеансом , но удаляет только определенный член:

$unsetFromSessionID = ... ; # set your session id from where you want to unset from
$unsetVariableName = 'something'; # set the variable name

$backupSessionID = session_id($unsetFromSessionID);
session_start(); # load session data
unset($_SESSION[$unsetVariableName]);
session_commit(); # save changes to disc

session_id($backupSessionID); # switch to current session
session_start();

Если вы хотите выяснить, был ли активен этот другой сеанс или нет, это невозможно сделать с помощью этого метода и из PHP, поскольку PHP создаст новый пустой сеанс на session_start() в случае, если он не существует.

Альтернативой является непосредственная работа с хранилищем сеансов, например, путем поиска файла сеанса на диске, загрузки его содержимого, удаления переменной и ее сохранения обратно.Библиотека PHP, которая может сделать это Serialized , поставляется с примером Session File Viewer , который может быть хорошей отправной точкой.

См. Также: Как узнать, активен ли сеанс?

0 голосов
/ 30 января 2018

Если вы хотите изменить идентификатор сеанса при каждом входе в систему, обязательно используйте session_regenerate_id (true) во время входа в систему.

   session_start(); 
   session_regenerate_id(true); 
0 голосов
/ 27 января 2012

Для большей безопасности я знаю, что делать это нехорошо - спасибо за комментарии под вопросом.Так что лучше сделать это с помощью задачи CRON, без доступа пользователя, верно?

session_id($variable_PHPSESSID);
session_start();
unset($_SESSION['something']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...