我有一个名为isLoggedIn()
的函数 - 根据用户是否登录返回FALSE
或TRUE
。它通过检查用户数据是否在会话中设置来完成此操作。
我有另一个名为getUserSession()
的函数,它在会话中获取并返回用户数据。我的问题是:两者合并都可以吗?
我的意思是isLoggedIn()已经在访问会话值,所以如果我在函数中返回它,那么我就这样使用它:
//when I need session data
$user = isLoggedIn();
echo "Hello ".$user['name'];
//when I need to check if user is not logged in
if(!isLoggedIn())
{
echo "Please login to proceed!";
}
这种方法有问题吗?我的同事说我不应该合并它们,但我不知道这里有什么问题......
答案 0 :(得分:1)
如果要合并他们会做这样的事情
if($user = isLoggedIn())
{
echo "Hello ".$user['name'];
} else {
echo "Please login to proceed!";
}
答案 1 :(得分:0)
您可以合并它们,但是您需要某种值来对应未登录的人。例如,如果您有一个名为getUserSession()
的函数,它只返回$_SESSION['User']
您可能想要实现它类似于:
function getUserSession() {
return isset($_SESSION['User']) ? $_SESSION['User'] : NULL;
}
现在NULL
将代表无效会话(用户未登录)。您所要做的就是检查您的会话是否为NULL并且您知道用户未登录。
$user = getUserSession();
if ($user != NULL) {
//Stuff here with a valid session
} else {
//Do stuff if the user is not logged in
}
答案 2 :(得分:0)
是的,您当然可以合并这些功能。如果用户不存在,则返回false,如果用户存在则返回userdata,您可以按照问题中的显示使用它
事实上,如果可能的话,应该这样做,因为如果发生任何变化,更容易更改和维护代码。
您应该考虑一件事 - 如果您在此功能中执行任何可能影响您的性能的操作 - 例如查询数据库。在这种情况下你可能应该使用某种缓存,但是如果每次检查用户是否都没有登录,你就会查询数据库以获取用户数据/在数据库中进行任何检查,这可能会导致性能下降。
答案 3 :(得分:0)
关注的是,如果您碰巧返回任何可以评估为false
的内容。其中包括0
,空字符串"false"
,一个空数组,其中一些可能是有效的会话值。例如,如果您没有会话值,那么它将返回一个空数组(或空字符串),这将评估if(!isLoggedIn())
为真。