$ _SESSION неустановленная проблема - PullRequest
0 голосов
/ 24 февраля 2011

У меня странный случай, когда переменная сеанса не установлена.Кажется, это вызвано следующей строкой:

if($_SERVER['SCRIPT_NAME'] != "/search.php") unset($_SESSION["search"]);

Принимая во внимание, что если я удаляю unset () в предложении if, он работает нормально.Любопытно, что вместо unset () выводится какой-то произвольный текст, ничего не выходит (все хорошо).

Может кто-нибудь увидеть любые возможные проблемы с приведенной выше строкой, которые могут привести к тому, что $ _SESSION будет по-прежнемубыть неустановленным, имея в виду, что $ _SESSION ['search'] на самом деле является массивом (а иногда и многомерным) ??

EDIT:

include SERVER_ROOT.'/classes/session.class.php';
$sess = new Session();
session_start();

Например, следующее будет отображаться 'аллилуйя ':

if($_SERVER['SCRIPT_NAME'] != "/search.php") ;
if(isset($_SESSION["search"])) echo 'hallelujah';

Но этого не произойдет (и оператор if оценивается как ложный):

if($_SERVER['SCRIPT_NAME'] != "/search.php") unset($_SESSION["search"]);
if(isset($_SESSION["search"])) echo 'hallelujah';

Ответы [ 5 ]

1 голос
/ 24 февраля 2011
if($_SERVER['SCRIPT_NAME'] != "/search.php") unset($_SESSION["search"]);
if(isset($_SESSION["search"])) echo 'hallelujah';

ЕСЛИ первое условие верно, оно отменяет поиск. Это означает, что второе условие не сработает, поэтому вы ничего не повторяете. В чем здесь проблема?

EDIT

Добавлена ​​еще одна отладка после комментария

var_dump($_SERVER['SCRIPT_NAME'] != "/search.php")

Что напечатано, когда вы положили это? Это ИСТИНА или ЛОЖЬ?

0 голосов
/ 28 июня 2012

Хорошо, так плохо, это было как-то связано со страницей 404 и перенаправлениями htaccess. По сути, страница 404 содержала тот же код и каким-то образом включалась в файл htaccess, который, в свою очередь, сбрасывал значение $ _SESSION. Любопытно, но с настоящим кодом все в порядке.

0 голосов
/ 24 февраля 2011

Пробовал комментировать всю строку? Я не уверен, какой цели он служит, учитывая контекст.

0 голосов
/ 24 февраля 2011

Я в замешательстве. Что происходит и что должно произойти вместо этого? Вот что делает ваш код: если вы не используете search.php, вы удаляете ключ search и его значение из массива $_SESSION. Не хочешь описать похожими словами, что ты воспринимаешь как проблему?

0 голосов
/ 24 февраля 2011

unset() не волнует, является ли значение массивом или многомерным - оно сбрасывает его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...