我在这里读了两个问题。第一个问题,“确定用户是否登录的最佳实践是什么?”和第二个问题“是否存在会话劫持和会话固定问题?”
第一个问题:
我使用过的大多数网络应用程序/cms 都有一个用户对象。从代码的角度来看,这个对象没有什么特别之处,它只是一个代表用户的对象。当前登录的用户将其用户对象存储在会话中。$_SESSION['user']
在 Drupal(和其他平台)中,a 函数用于返回当前登录的用户,如果用户未登录,则返回 False。
例子:
function user(){
if( isset($_SESSION['user') and
is_object($_SESSION['user'] and
get_class($_SESSION['user']=='myUserClass')) ){
return $_SESSION['user'];
}else{
return False;
}
}
因此,在您的示例中,我们看到了有效,因为所有对象在子句if ( user() ) { CODE }
中都评估为 True 。if
第二个问题: Session-Hjacking 和 Session-Fixation 并不是真正的问题。客户端(Web 浏览器)无权访问服务器的 $_SESSION 数组。简而言之,是的,您在这里混淆了。