我正在尝试验证会话是否存在。为此,我尝试了以下方法:
在以下情况下进行新会话:
if(session_id() == '')
if(isset($_SESSION))
if(session_status() == PHP_SESSION_ACTIVE)
以上都不起作用。任何线索我可能会出错?
我这样做的原因是因为我需要根据会话是否存在来做单独的事情 - 比如
if (session exists)
....
else
...
可以尝试的两种选择是:
if (!session_id())
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.
}
您可以检查用户会话中是否有任何内容。
isset($_SESSION['some flag])
因为使用 session 需要一个session_start
调用,这将导致发送一个 session cookie 并最终创建一个 session,这将永远是真的。
试试这个:
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;
}