Отключить специальную сессию, используя идентификатор сессии - PullRequest
4 голосов
/ 15 июля 2011

Я администратор сайта. Я хочу сбросить конкретный сеанс, я знаю его идентификатор сеанса

Пользователи просто заявляют сеанс как этот

session_id("usernumber");
session_start();

Пусть скажет пользовательA имеет usernumber "123". Я хочу уничтожить все значения пользователя A, пользователь A не будет восстанавливать sessio_id () после установки его в качестве session_id ("123");

Как я могу удалить unset толькодля пользователя A.?

Ответы [ 4 ]

9 голосов
/ 13 сентября 2014

Ответ Джека Ло на 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();
6 голосов
/ 15 июля 2011

Без обратного инжиниринга обработчика сеанса ....

<?php

session_id($_GET['killsid']);
session_start();
session_destroy() || die "failed to kill";
3 голосов
/ 15 июля 2011

Вы можете попытаться получить session_save_path () (в этом каталоге хранятся файлы сессий).Когда вы используете имена сеансов по умолчанию, имя файла выглядит как sess_jgimlf5edugvdtlaisumq0ham5, где jgimlf5edugvdtlaisumq0ham5 - идентификатор сеанса пользователя, поэтому вы можете просто отсоединить этот файл, если у вас нет прав на редактирование этих файлов.

2 голосов
/ 15 июля 2011

Насколько я знаю, единственный поддерживаемый способ сделать это с обработчиком сеанса по умолчанию - выдать себя за пользователя с помощью session_id("usernumber");, а затем удалить значения.

Вы также можете хранить сеансы в базе данных , что сделает все это довольно простым, но вам нужно написать собственный код обработки сеансов.

Кстати, идентификатор сессии должен быть длинной случайной строкой, которую вы не можете угадать. Использование 123 означает, что любой анонимный посетитель может легко войти с любыми учетными данными пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...