Переменные сеанса PHP не регистрируются - PullRequest
1 голос
/ 04 июня 2011

Я искал весь день и обнаружил несколько похожих проблем, но ни одна из них не решила мою проблему.Как гласит заголовок, у меня проблемы с тем, что переменные сеанса не «сохраняются» - т.е. они работают только как локальные переменные.Что я пытаюсь сделать:

индексная страница с функцией «ABC», не запущенной по умолчанию - ссылка на myscript.php для активации переменной сеанса типа boolean - myscript.php проверяет, установлена ​​ли переменная сеанса, еслине превращает это в истину.В противном случае он становится ложным: на индексной странице теперь должна быть активирована функция «ABC».

Итак, вот самое забавное.Сегодня это работало как очарование, но после случайного обновления, теперь это не так.Думая, что это проблема сеанса, я добавил идентификатор сеанса, но обнаружил, что идентификатор сеанса является правильным / одинаковым как на странице индекса, так и на myscript.php.

Я также попытался включить отчеты об ошибках и обнаружил, что получаю «Неопределенный индекс: showAll в C: \ xampp \ htdocs \ kelvin \ ext \ set_date.php в строке 15».Который утомлен, видя, как я использую функцию issset, чтобы избежать только этого.

myscript.php

<?php
session_start();
echo "Session ID: " . session_id(); //Is the same as on the index page where the script is being called.
---------------
//Sets speed mode on or off (simple or extensive listing).
if(!isset($_SESSION['showAll']))
{    
    $_SESSION['showAll'] == TRUE;
}
 else {
    if($_SESSION['showAll'] == TRUE)
    {
        $_SESSION['showAll'] = FALSE;
    }
    else
    {
        $_SESSION['showAll'] = TRUE;
    }
}
header('location:../index.php');
?>

Заранее, спасибо за любой ввод:)

1 Ответ

5 голосов
/ 04 июня 2011

Ваша проблема может быть здесь:

if (!isset($_SESSION['showAll'])) {
  $_SESSION['showAll'] == TRUE;
}

Двойной знак равенства (==) проверяет на равенство, но ничего не устанавливает.

Попробуйтезаменив его одинарным знаком равенства (=).


Кроме того, ваша логика может быть значительно сжата:

if (!isset($_SESSION['showAll'])) {    
  $_SESSION['showAll'] = true;
} else {
  $_SESSION['showAll'] = !$_SESSION['showAll'];
}

Вы просто меняете значение $_SESSION['showAll'].

...