Logout _SESSION unset - Почему-то срабатывает первым, не учитывая порядок кода?

craft

Новичок
Logout _SESSION unset - Почему-то срабатывает первым, не учитывая порядок кода?

Привет, Всем.

Суть проблемы:
Нужно чтобы, при закрытии сессии, имя пользователя сохранялось во временной переменной, которая будет использована для человеческого прощания с пользователем. Сессия и переменные уничтожаются, но временная переменная не создаётся. Выглядит всё так, как будто PHP сначала удаляет сессию, а уж только потом просматривает всю логику скрипта. А так как переменные сессии уже удалены, то и скрипт работает не так как было запланировано.
Скрипт взял со своего старого проекта - там он работает без проблем.

Вопрос:
Помогите, пожалуйста, если кто сталкивался с такой проблемой?

[x86_64]
PHP: 5.2.4
Apache: 2.2.8
OS: Linux

Старый скрипт работает на 32-ух битной системе.

Код скрипта logout.php:

PHP:
<?php

session_start();

...

if (isset($_SESSION['user_name']))
{
  $name = $_SESSION['user_name'];
  $_SESSION['user_name'] = '';
  unset($_SESSION['user_name']);
  session_destroy();
  echo 'TEST'; // Не выводится на экран.
}

if (isset($name))
{
  // echo 'Пока '.$name.'!';
  $obj_page->content = $obj_page->TXT['goodbye'].$name;
}
else
{
  // echo 'Вы не были зарегистрированы!';
  $obj_page->content = $obj_page->TXT['login_first'];
}

$obj_page->mDisplay();

?>
Огромное спасибо за помощь.
 

dimagolov

Новичок
собственно файл с сессионными данными до и после выполнения данного скрипта смотрел?
 

craft

Новичок
Только что посмотрел.
До он с информацией, после пустой.
Если речь шла об файлах в папке: /var/lib/php

Только что это мне даст?

Пробывал var_dump(), пока без удаления переменных и сессии всё как бы хорошо - переменные сессии присутствуют, но сессия не закрывается. При удалении пер. и сесс. var_dump() выводит пустоту.
 

dimagolov

Новичок
craft, чудес не бывает. если до исполнения скрипта данные в файле сессии есть, а после нету, то это говорит, что скорее всего, идентификатор сессии в скрипт передается правильно и сам механизм сессий в php работоспособен. если так, то у тебя или сессия не стартует и поэтому isset($_SESSION['user_name']) == FALSE, или ты успеваешь убить $_SESSION['user_name'] или сессию в целом до этого кода. отлаживай свой скрипт.
 

craft

Новичок
Спасибо всем!

Персональное, огромное СПАСИБО, dimagolov.

Когда я обнаружил ошибку, смеялся очень долго!

А дело было в ссылке меню, по которой совершался уход с сайта.
В теге <td> присутствовала строчка: onclick="location.href='logout.php?lang=lv';"
Я забыл убрать её с активных линков. В результате чего, страница загружалась два раза: по ссылке в теге <a> и по вставке в теге <td>.

Проблема решена.
 
Сверху