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

  • Автор темы Автор темы trompert
  • Дата начала Дата начала

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();
}
?>
 
просто надо чтобы старая сессия удалялась, переменная забывалась, а новая записывалась. поэтому session_register("nick").
в чем может быть ошибка??
 
trompert
ПОСЛУШАЙ!!!

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

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

Используй соответствующие массивы.
 
2RomikChef, я уже целый день слушаю, но пока еще решения проблемы не услышал.
что не так в коде? заменить $nick на $HTTP_SESSION_VARS["nickt"]; ?
 
Попробуй написать session_start() после session_destroy())
 
$nick = $HTTP_POST_VARS["nick"]; вот чего не было!
спасибо RomikChef, подсказал. :)
 
session_destroy() - уничтожает все данные принадлежащие текущей сессии
session_unregister - исключает переменную из данных сессии.
После вызова функции session_unregister() глобальная переменная, не уничтожается а сохраняет свое значение!!!
 
единственное, непонятно почему переменная nick не уничтожается после закрытия окна браузера. кто-нибудь может ответить?
 
2 Dim-Dim
Не понял как она может сохранять свое значение?
в мане же написано:
session_unregister() unregisters (forgets) the global variable named name from the current session.
 
Автор оригинала: trompert
единственное, непонятно почему переменная nick не уничтожается после закрытия окна браузера. кто-нибудь может ответить?
Сомневаюсь..@
 
trompert, объясни мне, ОТКУДА ты узнал что переменная nick не уничтожилась после того как ты закрыл свой браузер???
 
потому, что когда регистрируюсь, закрываю окно, открываю этот скрипт в другом браузере - переменная nick = admin1 или admin2.
 
Не понял как она может сохранять свое значение?
Она уничтожиться только после завершения сценария. После вызова функции она просто сотреться из файла сессии. (Все сказанное имеет смысл при регистер глобалс он)
 
да мне просто нужна функция по удалению всех переменных сессии сразу после закрытия окна браузера.
 
trompert
sessionm_destroy НЕН УНИЧТОЖАЕТ переменную.
эта функция только удаляет ее из сессионного файла.

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

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