XAMPP php执行if和else部分

时间:2018-06-02 20:19:18

标签: php laravel if-statement session-variables

很奇怪。我的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. 当我在if块中使else条件成立时,会发生这种情况。而且这个条件是设置一个会话变量。

  3. 我自己认为代码执行了两次或者其他什么,但事实并非如此。
  4. 更重要的是“if”条件为真,如果取消注释第一行echo $_SESSION['abc'];,它将显示未定义的索引错误。
  5. 对我来说最奇怪的感觉是,当它在“if”阻止中达到$_SESSION['abc'] = "new";时,它会跳到“else”,忽略它之前的回声线。
  6. 奇怪!!我错过了什么,或者是XAMPP错误。是的,代码在生产服务器上按预期工作。

    编辑: 我想补充一点,只是为了这个行为我还重新安装了XAMPP(最新版本)。 至于“我怎么知道它是否设置会话变量,而不是在它之前回显它”,它在else-block中输出echo $_SESSION['abc'];,但如果我取消注释第一行{{1},它会显示未定义的索引错误}

    在else-block中添加echo线的代码。

    echo $_SESSION['abc'];

    更新2018-06-03 我在Laravel做了上面的代码。我在一个普通的PHP文件中尝试使用Laravel框架中的上述代码,它在XAMPP中工作,应该如此。所以新信息是,这不适用于Laravel-XAMPP组合。版本:Laravel 5.4和XAMPP 7.2.5

    现在??

1 个答案:

答案 0 :(得分:0)

我不确定你想要达到的目标。在为会话密钥分配值之前,您似乎正在测试$ _SESSION。

执行print_r($ _SESSION)以清除分配了哪个值。重新加载会话后会存储哪个值。您还可以打印输出语句,以查看$('#get_web_data').on('tap',function(){ $.ajax({ url:'http://localhost/test.php', type:'GET', data:{'user_name':'amir','password':'123'}, dataType:'json', timeout: 5000, crossDomain: true, error: function (jqXHR, textStatus, errorThrown) { alert('new textStatus=' + textStatus + ' errorThrown=' + errorThrown); }, success: function (response) {alert(response); } }) ; }); 之类的结果作为示例。

echo (!isset(value))

如果设置并在else块中分配新值

,也尝试将第一个语句更改为true
session_start ();

print_r ($_SESSION);

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

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

} 
else {

      echo "set";
      print_r ($_SESSION);

}

希望有助于找到错误的地方

修改

务必使用 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()  在你的php.ini