php Работа с сессиями: unset($_COOKIE) и session_destroy() -- какая разница, зачем и то и то
Primary tabs
Привожу два отрывка из того же учебника ("Котеров PHP7"):
Немного о том, как сохранять данные в сессии. Для этого существует глобальный массив
$_SESSION, который PHP обрабатывает особым образом. При завершении сценария PHP автоматически сохраняет массив $_SESSION во временном хранилище, имя которого хранится в SID.
Далее описание функции удаления хранилища сессии session_destroy():
Данная функция уничтожает хранилище сессии. При этом массив $_SESSION не очищается! Чтобы полностью удалить сессию, вы должны выполнить следующую последовательность команд:
//Очистить данные сессии для текущего сценария: $_SESSION = []; //Удалить cookie, соответствующую id: @unset($_COOKIE[session_name()]); //удалить хранилище сессии: session_destroy();
Ну с куки понятно - они хранятся отдельно в браузере. Но вот в первой цитате же прямо говорится что массив $_SESSION хранится во временном хранилище, как я понимаю, том самом, кторое мы уничтожаем функцией session_destroy(). Зачем еще дополнительно обнулять сам массив? Или же имелось ввиду, что в хранилище хранится только ссылка на массив, а сам он располагается где-то еще за пределами хранилища. И тогда все уже становится логичнее - удалив ссылку мы просто потеряем к нему доступ, а память так и останется занятой?
Не понимаю, почему первая цитата "ломается" при публикации - на предварительном просмотре с ней все нормально.
- Log in to post comments
- 1818 reads