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