PHP中的会话处理问题

时间:2013-01-21 11:09:21

标签: php session

我正在尝试验证会话是否存在。为此,我尝试了以下内容:

在以下情况下进行新会话:

  1. if(session_id() == '')

  2. if(isset($_SESSION))

  3. if(session_status() == PHP_SESSION_ACTIVE)

  4. 以上都不起作用。我可能出错的任何线索?

    我这样做的原因是因为我需要根据会话是否存在来做单独的事情 - 比如

    if (session exists)
    
     ....
    
    else
    
     ...
    

3 个答案:

答案 0 :(得分:1)

  1. 您需要session_start,这将导致发送会话cookie
  2. 此变量始终存在
  3. 与1相同
  4. 您可以检查用户会话中是否有任何内容 isset($_SESSION['some flag]) 因为使用会话需要session_start调用,这将导致发送会话cookie并最终创建一个会话,这将永远是真的。

答案 1 :(得分:1)

尝试的两种方法是:

  1. if (!session_id())
  2. if (empty(session_id())
  3. 如果其中任何一个返回true,请确保先启动会话,然后检查您知道应存在的任何值。例如:

    // Start the session when no id is set
    if (!session_id()) {
        session_start();
    }
    
    // Double-check for a known session variable
    if (array_key_exists('username', $_SESSION) && !empty($_SESSION['username'])) {
        // Session is good, continue here.
    }
    

答案 2 :(得分:0)

试试这个:

public function session_exists(){
    if(ini_get('session.use_cookies') == '1' && isset($_COOKIE[session_name()])){
        return true;
    } 
    else if(!empty($_REQUEST[session_name()])){
        return true;
    }
    return false;
}