XAMPP PHP выполняет обе части if и else - PullRequest
0 голосов
/ 02 июня 2018

Странно.Мой PHP-код выполняет части if и else.Следующий код начинается там, где $ _SESSION ['abc'] еще не установлено.

//echo $_SESSION['abc'];
if(!isset($_SESSION['abc'])){
  echo "not showing this echo";
  $_SESSION['abc'] = "new";
} else {
  echo " why it jumps here, in XAMPP?";
}

Мой настоящий код был более сложным, поэтому я сделал его проще, как указано выше.Приведенный выше код не повторяет "не показывает это эхо";даже если $ _SESSION ['abc'] не установлено.Если я закомментирую утверждение $_SESSION['abc'] = "new";, оно повторяет «не показывать это эхо».

То, что я сейчас выяснил:

  1. Это происходит только в XAMPP,на рабочем сервере то же самое работает нормально.

  2. Это происходит, когда я выполняю условие else в блоке if.И это условие устанавливает переменную сеанса.

  3. Я сам думал, что код выполняется дважды или еще что-то, но это не так.
  4. И что более важно условие «если» выполняется, есливы раскомментируете первую строку echo $_SESSION['abc'];, она покажет неопределенную ошибку индекса.
  5. Самое странное чувство для меня, когда оно достигает $_SESSION['abc'] = "new"; в блоке "if", оно переходит на "else", игнорируя эхострока перед ним.

Странно !!Я что-то упустил или это ошибка XAMPP.Да, код работает должным образом на рабочем сервере.

РЕДАКТИРОВАТЬ: Я хотел бы добавить, что только для этого поведения я также переустановил XAMPP (для последней версии).А что касается того, «как я узнаю, что он устанавливает переменную сеанса, но не выводит строку перед ней», он печатает echo $_SESSION['abc']; в блоке else, но показывает неопределенную ошибку индекса, если я раскомментирую первую строку echo $_SESSION['abc'];

Код с добавленной строкой эха в блоке else.

//echo $_SESSION['abc'];

if(!isset($_SESSION['abc'])){
  echo "not showing this echo";
  $_SESSION['abc'] = "new";
} else {
  echo " why it jumps here, in XAMPP?";
  echo $_SESSION['abc'];
}

ОБНОВЛЕНИЕ 2018-06-03 Я делал вышеуказанный код в Laravel.Я попробовал приведенный выше код из фреймворка Laravel в простом PHP-файле, и он работал в XAMPP, как и должно быть.Таким образом, новая информация, это не работает в комбинации Laravel-XAMPP.Версии: Laravel 5.4 и XAMPP 7.2.5

СЕЙЧАС ??

1 Ответ

0 голосов
/ 03 июня 2018

Я не уверен, чего ты хочешь достичь.Похоже, что вы тестируете $ _SESSION перед тем, как назначить значение своему ключу сеанса.

Выполните print_r ($ _SESSION), чтобы выяснить, какое значение назначено.И какое значение сохраняется после перезагрузки вашего сеанса.Вы также можете распечатать свой оператор, чтобы увидеть результат, например echo (!isset(value)).

session_start ();

print_r ($_SESSION);

if (!isset ($_SESSION ['whatever'])){

    echo "not set";
    print_r ($_SESSION);

} 
else {

      echo "set";
      print_r ($_SESSION);

}

Также попробуйте изменить первый оператор на true, если он установлен, и назначить новое значение в блоке else * 1007.*

session_start ();

print_r ($_SESSION);

if (isset ($_SESSION ['whatever'])){

    echo "set";
    print_r ($_SESSION);

} 
else {

      echo "not set";
      print_r ($_SESSION);

      $_SESSION['whatever'] = "new value";

}

Надеюсь, это поможет найти неисправное место

Редактировать

Обязательно используйте session_start() в самой первой строке

или установить session.auto_start = 1 в вашем php.ini

...