Действительно ли это - надлежащий способ уничтожить все данные сессии в php?

13
задан Garet Claborn 20 August 2015 в 15:29
поделиться

4 ответа

Сначала вы должны знать, что такое сеансы: вы можете рассматривать сеансы как контейнер данных на стороне сервера, связанный со случайным идентификатором, идентификатором сеанса. Этот идентификатор сеанса должен быть предоставлен клиентом, чтобы сервер мог загрузить данные, связанные с этим идентификатором сеанса (и, следовательно, с этим сеансом), в переменную $ _ SESSION . Все в этой переменной $ _ SESSION также называется переменными сеанса текущего активного сеанса.

Теперь к вашим вопросам:

Уничтожает ли код все сеансы ?? Это самый распространенный способ? как вы, ребята, уничтожаете сеансы php ??

Предоставленный код просто удаляет данные сеанса текущего сеанса. $ _ SESSION = array (); Оператор просто сбрасывает переменную сеанса $ _ SESSION , так что дальнейший доступ к переменной сеанса $ _ SESSION не удастся. Но сам контейнер сеанса еще не удален. Это будет сделано путем вызова session_destroy .

См. Также Действительно уничтожить сеанс PHP?

Ах да, кстати, что это за session_name () ?? Все название сеанса? например, $ _SESSION ['var1'], $ _SESSION ['var2'] ...?

session_name просто используется для идентификации параметра идентификатора сеанса, переданного в cookie, запросе URL или через параметр POST. Значение PHP по умолчанию - PHPSESSID . Но вы можете изменить его на все, что захотите.

Мне не нужно использовать unset ($ _ SESSION ['var1']); больше прав ???

Нет. Начальный $ _ SESSION = array ();

21
ответ дан 1 December 2019 в 18:55
поделиться

Это уничтожает только текущий сеанс пользователя, а не сеанс всех других пользователей.

Попробуйте использовать session_save_path (), чтобы узнать, где хранятся данные сеанса, а затем удалите все файлы там.

12
ответ дан 1 December 2019 в 18:55
поделиться

session_name () - это имя, которое передается в cookie / querystring. Обычно это PHPSESSID , но его можно изменить.

Нет правильного способа уничтожить все сеансы. Как говорит @Marius, вы можете попробовать удалить файлы сеанса из session_save_path () , но это в лучшем случае взлом.

В качестве альтернативы вы можете использовать session_set_save_handler () для сохранения ваших сеансов в где-то у вас есть больший контроль, например, база данных.

2
ответ дан 1 December 2019 в 18:55
поделиться

Чтобы уничтожить один сеанс, вы должны использовать следующее: -

session_destroy();

Предполагая, что вы использовали session_start () для предварительного запуска / возобновления сеанса.

Уничтожение всех сеансов действительно зависит о вашей настройке и о том, как вы обрабатываете сеансы.

Для большинства установок PHP обработка сеансов выполняется через файлы, поэтому лучшим способом было бы найти папку, в которой хранятся все сеансы (обычно ее можно найти в session_save_path () ) и удалите все находящиеся под ним файлы.

Я думаю, что лучший способ справиться с этим - заранее установить временную метку в каждой создаваемой вами сессии. Это означает, что затем вы можете сравнить эту временную метку с заданной точкой (время, когда вы хотите аннулировать все сеансы) и аннулировать сеанс, если он был раньше этого времени. Это также означает, что вы можете делать такие вещи, как установка определенного тайм-аута для сеанса и т. Д.

Другой способ - использовать сеансы, сохраненные в базе данных - вы можете найти хорошее руководство для этого здесь

2
ответ дан 1 December 2019 в 18:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: