Возвращаясь к вашему существующему запасному решению использования unset()
, вы говорите, что проблема в том, что их много, но это не должно усложнять; Я все еще думаю, что это хорошее решение вашей проблемы.
Во-первых, вы можете сбросить их все, используя цикл foreach()
; для этого потребуется всего несколько строк кода:
foreach($_SESSION as $key=>$value) {
if($key != "the_one_you_want_to_keep") {
unset($_SESSION[$key]);
}
}
Еще один способ сделать это - организовать данные сеанса в под-массивы, чтобы затем их можно было очистить, удалив единственную переменную массива верхнего уровня, но оставив другие данные сеанса в других подмассивах без изменений :
unset($_SESSION['user_data']);
//but don't unset $_SESSION['data_to_keep']
Надеюсь, это поможет.