Сессия закончилась, а проблемы с ней остались

Dam

Guest
Сессия закончилась, а проблемы с ней остались

Да, с сессиями разбираться - это тебе не в шахматы играть.:)
А дело вот в чём. Два файла в пределах сайта и две сесённые переменные; нужно чтобы при обновлении первого файла обе переменные очищались. Первая очищается без проблем, а со второй проблемы.
Очищаю я её так
unset($_SESSION["c"]) - по-моему правильно,
чуть позже делаю
print_r($_SESSION["c"]) - браузер молчит.
Но после перехода во второй файл после строчки в нём
print_r($_SESSION["c"])
просыпается и выдаёт старые данные, которые я вводил ещё 10 минут назад.
$_SESSION["c"] заполняется значениями только во втором файле, и она по идее должна быть пустой.
session_id() выдаёт в обоих файлах одинаковое значение.
В чём может быть дело? Я понимаю, что тяжко так сразу разобраться, но если надо я пришлю какие-нибудь доп данные.
 

Dam

Guest
А в чём может быть проблема, то что unset($_SESSION["c"]) срабатывает я уверен на 100%. Однако данные как то выживают.
 

Larson

Новичок
Ты делаешь print_r($_SESSION["c"]), у тебя $_SESSION["c"] - массив, чтоли?
 

Dam

Guest
Есессенно, не хранить же 50 пер-х в сессиях
 

Dam

Guest
Большое спасибо Larson!!
А почему же unset не подходит?
Для другой переменной - тоже массива - всё сработало как надо.
 

Larson

Новичок
unset для одной переменной или single element of an array, об этом в мане написано.
 

Dam

Guest
Ещё раз спасибо, а то бы ещё несколько часов искал в чём же дело.
 

Larson

Новичок
Прямой цитаты нет. Я же не говорил, что именно так написано - об этом написано. По крайней мере ничего об unset( $array ) нет, и в частности, для $_SESSION рекомендуют использовать либо $_SESSION['some_var'] = NULL, либо $_SESSION = array().
 

Varg

Guest
2Larson: Не знаю как там у вас, но unset вполне работает на массивах сессий.

PHP:
Function SStop() {
	unset($_SESSION['SA']);
	unset($GLOBALS['SA']);
}
 

Dam

Guest
2Varg: может иногда и работает, но не всегда.
По крайней мере замена только одной строчки

unset($_SESSION['с'])
на
$_SESSION['c'] = array()

полностью решило проблему.
А писать unset($GLOBALS['c']) не имело смысла, т.к. переменную $c я вообще не использовал - везде писал $_SESSION['с']).
 
Сверху