Я администратор сайта. Я хочу отключить определенный сеанс, я знаю его идентификатор сеанса
Пользователи просто указывают сеанс следующим образом
session_id("usernumber"); session_start();
Скажем, пользователь A имеет число «123», которое я хочу уничтожить всеми значениями пользователя A, пользователь A не будет регенерировать sessio_id () после установки в качестве session_id («123»);
Как я могу отключить уничтожение только для пользователя A.?
Без обратной обработки обработчика сеанса ….
<?php session_id($_GET['killsid']); session_start(); session_destroy() || die "failed to kill";
Ответа на этот вопрос Jack Luo на php.net
$session_id_to_destroy = 'nill2if998vhplq9f3pj08vjb1'; // 1. commit session if it's started. if (session_id()) { session_commit(); } // 2. store current session id session_start(); $current_session_id = session_id(); session_commit(); // 3. hijack then destroy session specified. session_id($session_id_to_destroy); session_start(); session_destroy(); session_commit(); // 4. restore current session id. If don't restore it, your current session will refer to the session you just destroyed! session_id($current_session_id); session_start(); session_commit();
Насколько мне известно, единственный поддерживаемый способ сделать это с помощью обработчика сеанса по умолчанию – олицетворять пользователя session_id("usernumber");
а затем удалите значения.
Вы также можете хранить сеансы в базе данных , что сделало бы все это довольно простым, но вам нужно написать свой собственный код обработки сеанса.
Кстати, идентификатор сеанса должен быть длинной случайной строкой, которую вы не можете догадаться. Использование 123
означает, что любой анонимный посетитель может легко войти в систему с любыми учетными данными пользователя.
Вы можете попробовать получить session_save_path () (в этом каталоге хранятся файлы сеанса). Когда вы используете имена сеансов по умолчанию, имя файла выглядит как sess_jgimlf5edugvdtlaisumq0ham5, где jgimlf5edugvdtlaisumq0ham5 является идентификатором сеанса пользователя, поэтому вы можете просто отменить этот файл, если у вас нет прав на редактирование этих файлов.