如何检查一个PHP会话是否为空?

这是不好的做法?

if ($_SESSION['something'] == '') { echo 'the session is empty'; } 

有没有办法检查它是否空或它没有设置? 我真的这样做:

 if (($_SESSION['something'] == '') || (!isset($_SESSION['something'])) { echo 'the session is either empty or doesn\'t exist'; } 

is !isset只是检查$_SESSION['']存在,并不检查数组中是否有值

我会用issetempty

 session_start(); if(isset($_SESSION['blah']) && !empty($_SESSION['blah'])) { echo 'Set and not empty, and no undefined index error!'); } 

array_key_exists是使用isset检查密钥的不错select:

 session_start(); if(array_key_exists('blah',$_SESSION) && !empty($_SESSION['blah'])) { echo 'Set and not empty, and no undefined index error!'); } 

确保在读取或写入会话数组之前调用session_start

在访问存在不确定的variables之前,使用issetemptyarray_key_exists (特别是数组键)。 所以在第二个例子中改变顺序:

 if (!isset($_SESSION['something']) || $_SESSION['something'] == '') 

你正在寻找PHP的empty()函数

您可以使用count()函数来查看$ _SESSION数组中有多less个条目。 这不是很好的做法。 您应该设置用户(或类似的)的ID来检查会话是否被初始化。

 if( !isset($_SESSION['uid']) ) die( "Login required." ); 

(假设你想检查是否有人login)

如果你想检查会话是否可用,你可能需要使用session_id()函数:

如果没有当前会话(不存在当前会话ID),session_id()将返回当前会话的会话标识或空string(“”)。

 if(isset($_SESSION)) {} else {} 

这不是一个坏习惯。 但是你可能会得到一个错误

未定义的索引(您定义的键)

所以最好的做法是使用内置的array_key_exists函数来检查数组键是否存在。