如何检查 PHP 会话是否为空? [重复]

问题描述 投票:0回答:7

这是不好的做法吗?

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['']
是否存在,而不检查数组中是否有值

php session
7个回答
113
投票

我会使用

isset
empty
尽管在
empty()
之后进行
isset()
检查完全无用/冗余
):

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


12
投票

在访问您不确定是否存在的变量之前,请使用

isset
empty
array_key_exists
(尤其是数组键)。因此,更改第二个示例中的顺序:

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

6
投票

您正在寻找 PHP 的

empty()
函数


4
投票

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

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

(假设您想检查某人是否登录)


4
投票

如果你想检查会话是否可用,你可能需要使用

session_id()
函数:

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

0
投票
if(isset($_SESSION))
{}
else
{}

0
投票

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

     function sessionexists(){
        if(!empty($_SESSION)){
     return true;
         }else{
     return false;
         }
      }


        if (!sessionexists()){
           redirect("https://www.yoursite.com/");
           exit();
           }else{call_user_func('check_the_page');
         } 
© www.soinside.com 2019 - 2024. All rights reserved.