почему не работает session_unregister()?

trompert

Guest
почему не работает session_unregister()?

Есть такой код. когда я захожу как админ1 - потом не получается сменить на админ2. никак. пробовал открывать в новом окне - все равно. хоть комп перегружай каждый раз.
почему? и что можно сделать?
PHP:
<?
if (isset($submit)) {
  if ((($nick!="admin2")||($passwd!="4928"))and(($nick!="admin1")||($passwd!="4927"))) {
    header("Location: entry.php");
    exit;
} else {
    session_start();
    session_destroy();
    session_unregister("nick");
    //print $nick;
    session_register("nick");
    print $nick;
    //header("Location: index.php");
  }
} else {
?>
<form action="entry.php" method="post">
&#203;&#238;&#227;&#232;&#237;:<input type="text" name="nick"><br>
&#207;&#224;&#240;&#238;&#235;&#252;:<input type="password" name="passwd"><br>
<input type="submit" name="submit">
</form>

<?
//phpinfo();
}
?>
 

trompert

Guest
просто надо чтобы старая сессия удалялась, переменная забывалась, а новая записывалась. поэтому session_register("nick").
в чем может быть ошибка??
 

RomikChef

Guest
trompert
ПОСЛУШАЙ!!!

Специально для тебя, чтобы ты не путался, персонально, создатели PHP отключили регистер_глобалс.

А ты все равно упорно лезешь на те же грабли.
У тебя и в форме ник и в сессии ник и в голове ник.
РАЗДЕЛИ ИХ.

Используй соответствующие массивы.
 

trompert

Guest
2RomikChef, я уже целый день слушаю, но пока еще решения проблемы не услышал.
что не так в коде? заменить $nick на $HTTP_SESSION_VARS["nickt"]; ?
 

pehap

Guest
Попробуй написать session_start() после session_destroy())
 

trompert

Guest
$nick = $HTTP_POST_VARS["nick"]; вот чего не было!
спасибо RomikChef, подсказал. :)
 

Dim-Dim

looking...
session_destroy() - уничтожает все данные принадлежащие текущей сессии
session_unregister - исключает переменную из данных сессии.
После вызова функции session_unregister() глобальная переменная, не уничтожается а сохраняет свое значение!!!
 

trompert

Guest
единственное, непонятно почему переменная nick не уничтожается после закрытия окна браузера. кто-нибудь может ответить?
 

pehap

Guest
2 Dim-Dim
Не понял как она может сохранять свое значение?
в мане же написано:
session_unregister() unregisters (forgets) the global variable named name from the current session.
 

pehap

Guest
Автор оригинала: trompert
единственное, непонятно почему переменная nick не уничтожается после закрытия окна браузера. кто-нибудь может ответить?
Сомневаюсь..@
 

pehap

Guest
trompert, объясни мне, ОТКУДА ты узнал что переменная nick не уничтожилась после того как ты закрыл свой браузер???
 

trompert

Guest
потому, что когда регистрируюсь, закрываю окно, открываю этот скрипт в другом браузере - переменная nick = admin1 или admin2.
 

Dim-Dim

looking...
Не понял как она может сохранять свое значение?
Она уничтожиться только после завершения сценария. После вызова функции она просто сотреться из файла сессии. (Все сказанное имеет смысл при регистер глобалс он)
 

trompert

Guest
да мне просто нужна функция по удалению всех переменных сессии сразу после закрытия окна браузера.
 

RomikChef

Guest
trompert
sessionm_destroy НЕН УНИЧТОЖАЕТ переменную.
эта функция только удаляет ее из сессионного файла.

скрипт начался. ник равен нику из поста.
session_start();
ник равен нику из сессии.
session_destroy();
session_unregister("nick");
в сессии ника нету, но в переменной ник из сессии!
session_register("nick");
регистрируем ник из сессии.

Понятно?
 
Сверху