【问题标题】:If php $_SESSION variable has data如果 php $_SESSION 变量有数据
【发布时间】:2019-08-07 08:05:30
【问题描述】:

我是 php 新手。我正在尝试检查会话变量是否有值?如果是,则不执行任何其他设置值。这是我的代码:

if (isset($_POST['ProductName'])) {
    if (!empty($_SESSION['UserBasketID'])) {
        $order = $_POST['ProductName'];
        $date = date("Ymd");
        $_SESSION['UserBasketID'] = $date.$order;
        var_dump($_SESSION['UserBasketID']);            
    } else {
        echo 'The session is set';
        if (isset($_SESSION['UserBasketID'])) {
            var_dump($_SESSION['UserBasketID']);
        }
    }
}

谁能告诉我它在 php 中是如何工作的。

【问题讨论】:

    标签: php session session-variables


    【解决方案1】:

    php documentation 声明自 7.1.0 起:

    session_start() 现在返回 FALSE,并且在启动会话失败时不再初始化 $_SESSION。

    所以现在检查会话属性是否设置的正确方法是:

    
    if (session_start() && isset($_SESSION['UserBasketID'])) {
       // $_SESSION['UserBasketID'] is set
    } else {
       // Either no session, $_SESSION not initialized or $_SESSION['UserBasketID'] not set
    }
    

    【讨论】:

      【解决方案2】:

      你的 if 条件是倒退的。

      empty() 如果变量未设置或包含空值,则返回 true。
      !empty()(前面带有 !)如果变量 是 em> 设置且不包含空值。

      所以代码:

      if (!empty($_SESSION['UserBasketID']))
      

      如果会话已定义且具有非空值,则评估为 true,这意味着您当前仅在已设置会话时才设置会话。

      删除empty()前面的!,它应该可以工作:

      if (isset($_POST['ProductName'])) {
          if (empty($_SESSION['UserBasketID'])) {
              $order = $_POST['ProductName'];
              $date  = date("Ymd");
              $_SESSION['UserBasketID'] = $date . $order;
              var_dump($_SESSION['UserBasketID']);            
          } else {
              echo 'The session is set';
      
              // We can remove the if-statement here since we
              // we've already checked it
              var_dump($_SESSION['UserBasketID']);
          }
      }
      

      【讨论】:

      • 我只是尝试一下,它会通过单击另一个项目来重写我的会话变量。 Är du svensk?
      • @AndeasWalz - 这是一个完全不同的问题。如果这解决了您问题中的特定问题,您应该接受它。如果您遇到其他问题,那么您应该编写一个新问题,其中包含正确的解释和所有相关代码。是的,jag är svensk :-)
      猜你喜欢
      • 2011-11-19
      • 2015-05-10
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      • 2014-03-31
      • 2015-05-09
      • 2011-10-29
      相关资源
      最近更新 更多