Я думаю, что это поведение о реализации драйвера сеанса по умолчанию.(См. здесь ).
Когда вызывается session_destroy
, PHP запускает destroy
метод обработчика класса сеанса.возможно, он уничтожает только данные без прикосновения к $_SESSION
, и когда вызывается session_unset
, он проверяет на каждом $_SESSION
элементах, если ключ элемента сохранен, он удаляет его, если нет, он ничего не делает.
Наконец, когда вы сначала вызываете session_destroy
, все данные уничтожаются, поэтому session_unset
ничего не может сделать, пока $_SESSION[$key]
не сохраняется.
<?php
foreach($_SESSION as $key=>$value)
{
global $data_persisted; //fictive variable containing persisted datas as array
if(isset($data_persisted[$key])
{
unset($_SESSION[$key]);
}
}
Наконец, после вызова соответствующих session_destroy
и session_unset
, $_SESSION
все еще будут иметь свои данные.