我必须实现一些功能的管理。为此,我正在检查会话是否为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']
,则给出错误。
有办法吗?请帮助
你写的东西会很好:
if(isset($_SESSION['user_type']) && $_SESSION['user_type']== 'admin')
PHP在求布尔表达式时使用短路求值,因此$_SESSION['user_type']== 'admin'
只会在isset($_SESSION['user_type'])
返回true
时求值,从而防止抛出错误。
可能值得一提的是,isset
只在键存在于数组且的值不是null
时才返回true,而array_key_exists('user_type', $_SESSION)
则在键存在时返回true
,而不管它的值是什么。
在这种情况下,这无关紧要,但为了将来参考!
我删除了一些小错误,请试试这个:
if(isset($_SESSION['user_type']) && $_SESSION['user_type'] === 'admin') {