这个功能应该是:
check_login_session()
{
if (!isset[$_SESSION['user_auth']) )
{
header('Location: login.php');
}
else
{
# check against database here?
return $_SESSION['user_auth'];
}
}
或者,如果在调用函数后发送标题:
check_login_session()
{
if (!isset[$_SESSION['user_auth']) )
{
return false;
}
else
{
# check against database here?
return $_SESSION['user_auth'];
}
}
所以,当它被调用时:
if (check_login_session === false)
{
header('Location: login.php');
}
我知道代码的功能基本相同,但最'正确的方法'是什么来重构它?
答案 0 :(得分:1)
第二种方法似乎更加正确和灵活。
如果$ _SESSION ['user_auth']返回false,则无论如何都必须检查响应。
将函数重命名为更像is_logged_in的函数可能更具可读性,并且可以理解函数执行/返回的内容。
答案 1 :(得分:1)
我会使用第二种方法。一般来说,函数应该是一个黑盒子...你提供参数,它们返回一个值或通过引用修改一些东西,或者如果它们是一个对象的方法,它们可能会修改那些对象的状态或另一个对象的状态。如果您需要根据返回值或修改的对象/参数采取操作,那么应该在主控制逻辑中完成。显然有例外,但这对我来说是一般规则。
如果您需要发送其他特定标头,并且您希望将其封装在一个函数中,那么这样就可以了,但我会说它与逻辑检查分开,如果它是一个经过身份验证的会话。