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

时间:2009-10-05 12:36:19

标签: php session

这是不好的做法吗?

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

有没有办法检查它是否为空或未设置?我实际上是这样做的:

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

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

8 个答案:

答案 0 :(得分:85)

我会使用issetempty

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

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

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

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

答案 1 :(得分:10)

在访问您不确定存在的变量之前,请使用issetemptyarray_key_exists(尤其是数组键)。因此,在第二个示例中更改顺序:

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

答案 2 :(得分:6)

您正在寻找PHP的empty()功能

答案 3 :(得分:5)

您可以使用count()函数查看$ _SESSION数组中有多少条目。这不是好习惯。您应该设置用户的ID(或类似的东西)以检查会话是否已初始化。

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

(假设您要检查是否有人登录)

答案 4 :(得分:4)

如果您想检查会话是否可用,您可能想要使用session_id()功能:

session_id()返回当前会话的会话ID或空字符串(“”),如果没有当前会话(不存在当前会话ID)。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

我知道这很旧,但是在检查是否存在会话后我在运行函数时遇到了一个问题。每当我注销后尝试加载页面时,都会抛出一个错误,但仍然可以正常工作,只是记录了一个错误页面。确保使用exit();如果您遇到相同的问题。

Object.entries(data).sort().map()

答案 7 :(得分:-2)

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