Возможно ли сбросить только одну переменную из другого сеанса в случае, когда я знаю значение 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 , который может быть хорошей отправной точкой.
См. Также: Как узнать, активен ли сеанс?