1

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

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

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

  2. if(isset($_SESSION))

  3. if(session_status() == PHP_SESSION_ACTIVE)

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

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

if (session exists)

 ....

else

 ...
4

3 回答 3

1

可以尝试的两种选择是:

  1. if (!session_id())
  2. if (empty(session_id())

如果其中任何一个返回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.
}
于 2013-01-21T11:15:47.703 回答
1
  1. 您需要 session_start ,这将导致发送会话 cookie
  2. 该变量始终存在
  3. 与 1 相同

您可以检查用户会话中是否有任何内容。
isset($_SESSION['some flag]) 因为使用 session 需要一个session_start调用,这将导致发送一个 session cookie 并最终创建一个 session,这将永远是真的。

于 2013-01-21T11:12:46.887 回答
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;
}
于 2013-01-21T11:11:57.173 回答