Завершение сеанса другого пользователя в переполнении стека

Когда пользователь запускает мое приложение, я запрашиваю строку идентификатора сессии PHP, используя session_id(), Я храню эту строку идентификатора сессии в таблице MySQL.

В приложение могут одновременно заходить десятки людей, и мне нужно иметь возможность удалить пользователя из программы, которая используется администратором и в которой перечислены все активные пользователи. До сих пор я не смог найти такую ​​функцию, как terminate_session($session_id), но я должен иметь возможность завершить сеанс другого пользователя PHP. Есть ли простой способ сделать это?

Добавлены следующие ответы: (не кричать)
Я не хочу делать это сам с таблицами mysql. Я хочу иметь возможность вызывать функцию php, которая завершает работу другого пользователя … Возможно ли это? Я знаю, что могу сделать это сам, интегрируя его в таблицы приложений и программы. Но я не хочу делать над этим больше работы, я просто хочу иметь возможность вызывать функцию php, используя строку php session_id, предоставленную функцией session_id (), и затем завершать процесс. Похоже на команду уничтожения Linux. Это существует в php ??? Спасибо

-2

Решение

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

Затем просто попросите пользовательский код периодически проверять, был ли сеанс помечен для уничтожения. Затем вы можете просто вызвать стандартную «session_destroy ()», и это убьет текущий сеанс, который, в этом случае, будет пользователем, которого вы отметили.

0

Другие решения

Для этого нет встроенной функции PHP, но у вас есть пара простых подходов.

Если у вас уже есть идентификаторы сеансов, которые вы хотите уничтожить, вооруженные session.save_path Установив, вы можете просто удалить файлы сеанса если вы используете файловые сессии.

$session_id = 'mslpuu98uf1jumf2ervboioeq6';

$session_file = sprintf(
'%s%ssess_%s',
session_save_path(),
PATH_SEPARATOR,
$session_id
);

unlink($session_file);

Префикс файла сеанса, sess_ был жестко запрограммирован в PHP в течение некоторого времени.

В качестве альтернативы, что-то вроде этого будет работать:

foreach ($sessionIdToDelete as $s) {
$_COOKIE[session_name()] = $s;

session_start();

unset($_SESSION);
session_destroy();

session_write_close();
}

Если это будет выполняться из браузера с использованием активного сеанса, обязательно позвоните session_write_close перед входом в цикл, и сохраните текущий session_id, чтобы вы могли установить его обратно в cookie.

0

По вопросам рекламы [email protected]