Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
blaccyee
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 202
1

Удаление сессии по ее ID

23.02.2019, 20:59. Просмотров 292. Ответов 13
Метки нет (Все метки)

Пытаюсь удалить сессию по session_id().
Все прекрасно работает, удаление происходит, но php возвращает ошибку в итоге:
session object destruction failed
На скрине кусок кода и ошибка.
Как правильно написать код, чтобы миновать ошибку?
0
Миниатюры
Удаление сессии по ее ID  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2019, 20:59
Ответы с готовыми решениями:

Удаление сессии при отсутствии активности
Здравствуйте, делаю сайт на php. У меня появился такой вопрос как удалить сессию пользователя,...

Удаление сессии
Искал в Google, пытался переделывать код, очищать сам (правда не получилось) и в итоге остановился...

Удаление переменных сессии
Добрый день) Подскажите пожалуйста: Все переменные сессии можно удалить как session_unset() или...

Не работает удаление сессии
Доброго времени суток! Пишу небольшое веб-приложение и решил сделать авторизацию, но возникла...

Удаление кукисов по окончанию сессии
А как сделать, чтобы кукисы удалялись по окончании сессии, т.е. по закрытию окна? Необходимо,...

13
VNIIAEN
370 / 236 / 107
Регистрация: 09.07.2018
Сообщений: 650
23.02.2019, 21:09 2
blaccyee, пример из мануала
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Инициализируем сессию.
// Если вы используете session_name("something"), не забудьте добавить это перед session_start()!
session_start();
 
// Удаляем все переменные сессии.
$_SESSION = array();
 
// Если требуется уничтожить сессию, также необходимо удалить сессионные cookie.
// Замечание: Это уничтожит сессию, а не только данные сессии!
if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
    );
}
 
// Наконец, уничтожаем сессию.
session_destroy();
0
blaccyee
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 202
23.02.2019, 22:05  [ТС] 3
Ну а где тут удаление сессии по ее ID? Тут удаление всех сессий только.
0
VNIIAEN
370 / 236 / 107
Регистрация: 09.07.2018
Сообщений: 650
23.02.2019, 22:24 4
blaccyee, а зачем вам удаление сессии по ID? Как на счёт
Замечание: Нет необходимости вызывать session_destroy() в обычном коде. Очищайте массив $_SESSION вместо удаления данных сессии.
0
23.02.2019, 22:24
blaccyee
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 202
23.02.2019, 22:31  [ТС] 5
Мне нужно удалить сессию конкретного пользователя. При авторизации я записываю сессию-айди в базу. После, когда хочу заблокировать доступ пользователю, блокирую по сесии-айди
0
VNIIAEN
370 / 236 / 107
Регистрация: 09.07.2018
Сообщений: 650
23.02.2019, 22:41 6
blaccyee,
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$session_id_to_destroy = 'nill2if998vhplq9f3pj08vjb1';
 
// 1. зафиксировать сессию, если она началась
if (session_id()) {
    session_commit();
}
 
// 2. сохранить идентификатор текущей сессии
session_start();
$current_session_id = session_id();
session_commit();
 
// 3. уничтожить нужную сессию
session_id($session_id_to_destroy);
session_start();
session_destroy();
session_commit();
 
// 4. восстановить идентификатор текущей сессии. Если не восстановить его,
// ваш текущий сеанс будет ссылаться на сеанс, который вы только что уничтожили
session_id($current_session_id);
session_start();
session_commit();
0
blaccyee
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 202
23.02.2019, 22:43  [ТС] 7
Я видел эту статью, у меня точно так же в коде
PHP
1
2
3
4
session_id($session_id_to_destroy);
session_start();
session_destroy();
session_commit();
Выполняет он все правильно, но выбивает ошибку, несмотря на то, что код отрабатывает
0
VNIIAEN
370 / 236 / 107
Регистрация: 09.07.2018
Сообщений: 650
23.02.2019, 22:48 8
Цитата Сообщение от blaccyee Посмотреть сообщение
Я видел эту статью, у меня точно так же в коде
Ну может кто-то ещё вам подскажет, более опытный.
0
Qwerty_Wasd
investigator front-dev
Эксперт JSЭксперт HTML/CSS
1891 / 1140 / 543
Регистрация: 16.04.2016
Сообщений: 3,063
Завершенные тесты: 2
24.02.2019, 07:04 9
blaccyee, VNIIAEN, я желаю вам обоим здравствовать и хочу задать пару вопросов
Преамбула -
Цитата Сообщение от blaccyee Посмотреть сообщение
у меня точно так же в коде
PHP
1
2
3
4
session_id($session_id_to_destroy); // Получает и/или устанавливает идентификатор текущей сессии
session_start(); // Стартует новую сессию
session_destroy(); // Уничтожает все данные сессии
session_commit(); // Завершает текущую сессию и сохраняет её данные.
А теперь собственно вопросы -
1. Каким образом, следуя этой логике, Вы устанавливаете id сессии, не успев начать её?
2. Каким образом Вы завершаете текущую сессию с сохранением инфы, если все сессии уничтожены?

Упреждая возможный ход диалога - это не сарказм, возможно я просто чего-то не понял.
0
VNIIAEN
370 / 236 / 107
Регистрация: 09.07.2018
Сообщений: 650
24.02.2019, 11:18 10
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
VNIIAEN, я желаю вам обоим здравствовать
Благодарю - взаимно
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
1. Каким образом, следуя этой логике, Вы устанавливаете id сессии, не успев начать её?
2. Каким образом Вы завершаете текущую сессию с сохранением инфы, если все сессии уничтожены?
Этот пример взят из официальной документации, вот ссылка на источник
0
Qwerty_Wasd
investigator front-dev
Эксперт JSЭксперт HTML/CSS
1891 / 1140 / 543
Регистрация: 16.04.2016
Сообщений: 3,063
Завершенные тесты: 2
24.02.2019, 11:27 11
Цитата Сообщение от VNIIAEN Посмотреть сообщение
Этот пример взят из официальной документации,
я прошу прощения, но Вы ошиблись. Да ссыль на доку, но пример приведен в комментах, человеком, что собственно сам не понял что пишет и тут же признается в этом =>
Note I'm not sure if solution provided below is perfect but it seems work for me.
Логика в этом императивном порядке ▼
PHP
1
2
3
4
session_id($session_id_to_destroy); // Получает и/или устанавливает идентификатор текущей сессии
session_start(); // Стартует новую сессию
session_destroy(); // Уничтожает все данные сессии
session_commit(); // Завершает текущую сессию и сохраняет её данные.
отсутствует напрочь. Возможно поэтому возникает session object destruction failed(ошибка ликвидации объекта сеанса). Завершиться пытается то, чего нет.
0
VNIIAEN
370 / 236 / 107
Регистрация: 09.07.2018
Сообщений: 650
24.02.2019, 11:37 12
Qwerty_Wasd, а как же тогда корректно её удалить? )
0
Qwerty_Wasd
investigator front-dev
Эксперт JSЭксперт HTML/CSS
1891 / 1140 / 543
Регистрация: 16.04.2016
Сообщений: 3,063
Завершенные тесты: 2
24.02.2019, 11:44 13
VNIIAEN, ну логично же - сначала удостовериться, что сессия вообще есть. Потом завершить её. Потом если понадобиться удалить совсем - удаляем.
0
Qwerty_Wasd
investigator front-dev
Эксперт JSЭксперт HTML/CSS
1891 / 1140 / 543
Регистрация: 16.04.2016
Сообщений: 3,063
Завершенные тесты: 2
24.02.2019, 11:44 14
VNIIAEN, ну логично же - сначала удостовериться, что сессия вообще есть. Потом завершить её. Потом если понадобиться удалить совсем - удаляем.
0
24.02.2019, 11:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2019, 11:44

PHP сессии, сортировка массива сессии
Доброе время суток, существует такая ситуация, у меня есть корзина, которая основана на сессиях,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru