【问题标题】:Check if session exists in php检查会话是否存在于php中
【发布时间】:2015-09-29 06:48:02
【问题描述】:

在我的 php 函数中,我想检查会话是否存在。基于会话存在我想返回真或假。

我有一个登录功能,它使用session_start(); 并在登录时将值存储到会话变量中,在注销时它将执行session_destroy();

现在我想检查会话是否存在。 我该怎么做呢

function ifsessionExists(){
    // check if session exists?
    if($_SESSION[] != ''){
    return true;
    }else{
    return false;
    }
}

【问题讨论】:

  • 试过isset()empty() ??请记住也为您的“检查”开始会话:)
  • 您要检查会话是否已启动或为空??
  • 如果您想检查会话是否已启动,请首选此链接stackoverflow.com/questions/6249707/…

标签: php session


【解决方案1】:

使用isset函数

function ifsessionExists(){
// check if session exists?
  if(isset($_SESSION)){
    return true;
  }else{
    return false;
  }
 }

你也可以使用empty函数

 function ifsessionExists(){
// check if session exists?
  if(!empty($_SESSION)){
    return true;
  }else{
    return false;
  }
 }

【讨论】:

  • 只是做return isset($_Session);return !empty($_Session); 用更少的代码做同样的事情(在你的例子中不应该是“不是空的$_Session”吗?)
【解决方案2】:

PHP >= 5.4.0 版本的推荐方式

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

来源:http://www.php.net/manual/en/function.session-status.php

对于 PHP

if(session_id() == '') {
    session_start();
}

【讨论】:

    【解决方案3】:

    您可以使用session_id()

    session_id() 返回当前会话的会话 ID,如果没有当前会话(不存在当前会话 ID),则返回空字符串 ("")。

    function ifsessionExists(){
        // check if session exists?
        $sid= session_id();
        return !empty($sid);
    }
    

    【讨论】:

      【解决方案4】:

      使用

      function ifsessionExists(){
      // check if session exists?
      if(isset($_SESSION['Key']) && $_SESSION['Key'] == 'Value'){
      return true;
      }else{
      return false;
      }
      }
      

      【讨论】:

        【解决方案5】:

        您可以使用isset

        function ifsessionExists(){
            //check if session exists?
            if (isset($_SESSION['key'])){
            return true;
            }else{
            return false;
            }
        }
        

        【讨论】:

          【解决方案6】:

          试试这个:

          function ifsessionExists(){
              // check if session exists?
              if(isset($_SESSION)){
              return true;
              }else{
              return false;
              }
          }
          

          实际上,这是 session_status() 文档页面上建议的更好的方法:

          <?php
          /**
          * @return bool
          */
          function is_session_started()
          {
              if ( php_sapi_name() !== 'cli' ) {
                  if ( version_compare(phpversion(), '5.4.0', '>=') ) {
                      return session_status() === PHP_SESSION_ACTIVE ? TRUE : FALSE;
                  } else {
                      return session_id() === '' ? FALSE : TRUE;
                  }
              }
              return FALSE;
          }
          
          // Example
          if ( is_session_started() === FALSE ) session_start();
          ?>
          

          在这里你可以阅读更多关于它http://sg2.php.net/manual/en/function.session-status.php#113468

          【讨论】:

            猜你喜欢
            • 2012-10-03
            • 2012-10-18
            • 1970-01-01
            • 2011-04-02
            • 2011-12-29
            • 2018-04-04
            • 2013-02-26
            • 2013-05-22
            • 2012-02-12
            相关资源
            最近更新 更多