Сначала вы должны знать, что такое сеансы: вы можете рассматривать сеансы как контейнер данных на стороне сервера, связанный со случайным идентификатором, идентификатором сеанса. Этот идентификатор сеанса должен быть предоставлен клиентом, чтобы сервер мог загрузить данные, связанные с этим идентификатором сеанса (и, следовательно, с этим сеансом), в переменную $ _ 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 ();
Это уничтожает только текущий сеанс пользователя, а не сеанс всех других пользователей.
Попробуйте использовать session_save_path (), чтобы узнать, где хранятся данные сеанса, а затем удалите все файлы там.
session_name ()
- это имя, которое передается в cookie / querystring. Обычно это PHPSESSID , но его можно изменить.
Нет правильного способа уничтожить все сеансы.
Как говорит @Marius, вы можете попробовать удалить файлы сеанса из session_save_path ()
, но это в лучшем случае взлом.
В качестве альтернативы вы можете использовать session_set_save_handler ()
для сохранения ваших сеансов в где-то у вас есть больший контроль, например, база данных.
Чтобы уничтожить один сеанс, вы должны использовать следующее: -
session_destroy();
Предполагая, что вы использовали session_start () для предварительного запуска / возобновления сеанса.
Уничтожение всех сеансов действительно зависит о вашей настройке и о том, как вы обрабатываете сеансы.
Для большинства установок PHP обработка сеансов выполняется через файлы, поэтому лучшим способом было бы найти папку, в которой хранятся все сеансы (обычно ее можно найти в session_save_path () ) и удалите все находящиеся под ним файлы.
Я думаю, что лучший способ справиться с этим - заранее установить временную метку в каждой создаваемой вами сессии. Это означает, что затем вы можете сравнить эту временную метку с заданной точкой (время, когда вы хотите аннулировать все сеансы) и аннулировать сеанс, если он был раньше этого времени. Это также означает, что вы можете делать такие вещи, как установка определенного тайм-аута для сеанса и т. Д.
Другой способ - использовать сеансы, сохраненные в базе данных - вы можете найти хорошее руководство для этого здесь