?php function destroy_session_and_data() { session_start(); $_SESSION = array(); if (session_id() != "" || isset($_COOKIE[session_name()])) setcookie(session_name(), '', time() - 2592000, '/'); session_destroy(); } ?>
Я понимаю, что приведенный выше код используется для завершения сеанса, но я не могу понять необходимость условия if и команды setcookie.
Также не могли бы вы объяснить, что именно является session_id () и session_name ().
Ясное объяснение было бы очень полезно. благодаря
Сеанс работает с установкой пары ключ / значение в файле cookie. Ключ указывает, что это идентификатор сеанса, а значение – идентификатор сеанса. по умолчанию для веб-сайтов на основе PHP ключ PHPSESSID, но его можно изменить.
Код проверяет, есть ли сеанс, переданный с запросом, либо путем запуска действительного сеанса (session_id () вернет идентификатор сеанса), либо просто есть PHPSESSID в cookie – и forse браузере, чтобы удалить cookie, установив дату истечения срока действия в мимо
Из руководства:
session_id()
используется для получения или установки идентификатора сеанса для текущего сеанса.
session_name()
возвращает имя текущего сеанса. Если задано имя, session_name()
обновит имя сеанса и вернет имя старого сеанса.
id
используется как первичный ключ (уникальный) для базы данных, в которой хранятся сеансы (по умолчанию только в файлах ondisk), name
– это просто имя. Я не уверен, что name
должно быть уникальным. Таким образом, в этом случае код проверяет, является ли session_id (получение данных из cookie браузера и поиск в локальном db) или если есть файл cookie с данным именем session_name. Если это так, он устанавливает время истечения срока действия файла cookie (клиентской стороны) до 43,2 минут назад и уничтожает сеанс (на стороне сервера).
чтобы узнать, в каком «сеансе» присутствует посетитель, установлен файл cookie. Пока этот файл cookie доступен, пользователь останется в том же сеансе. Чтобы завершить сеанс, его нужно удалить (это объясняет setcookie ().
session_id () и session_name () находятся в php manaul