我必须为admin实现一些功能。为此,我要检查会话是否设置为admin。
我使用了两个嵌套的if语句来检查会话变量,
session_start();
if(isset($_SESSION['user_type']))
{
if($_SESSION['user_type']== 'admin')
{
//functionality
}
}
我对上面的代码没有问题。它工作正常。但我想知道是否有任何方法可以在单个if语句中编写上述逻辑。
如果我写
if(isset($_SESSION['user_type']) && $_SESSION['user_type']== 'admin')
或
if(isset($_SESSION['user_type']) == 'admin')
如果未设置$_SESSION['user_type']
,则会出错。
有什么办法吗?请帮忙
答案 0 :(得分:2)
你所写的内容可以正常使用:
if(isset($_SESSION['user_type']) && $_SESSION['user_type']== 'admin')
PHP在评估布尔表达式时使用short-circuit evaluation,因此只有在$_SESSION['user_type']== 'admin'
返回isset($_SESSION['user_type'])
时才会评估true
,从而防止抛出错误。
值得一提的是,isset
只有在数组中存在键并且其值不是null
时才会返回true,而array_key_exists('user_type', $_SESSION)
如果密钥存在,将返回true
,无论其值如何。
在这种情况下,它并不重要,但供将来参考!
答案 1 :(得分:-3)
我删除了一些小错误,请尝试这个:
if(isset($_SESSION['user_type']) && $_SESSION['user_type'] === 'admin') {