显然,我有自己的看法和方法,但我很想知道是否有更好的方法。
您如何管理登录,即在只为会员提供内容之前检查用户是否使用有效登录登录。
$_SESSION
成员内容的自定义变量 ( $_SESSION['username']
)$_SESSION['username']
为当前登录用户的昵称曾几何时,我做了一个 Session 类,它在一个公共的包含文件中被实例化。它没有使用session_*
and $_SESSION
,而是使用了一个带有客户端 SID 的 cookie(我认为它是一个带有盐和一些迭代的 SHA-256 哈希)。在服务器上,客户端 SID 多次进入另一个散列函数以获取服务器端 SID,它是远程 MySQL 数据库中的主键。
为什么?因为该站点是在共享主机上,但会话需要安全,因为数据库保存了 18 岁以下人员的详细信息。PHP 默认/tmp
用作将会话数据存储为序列化文件的地方,这意味着任何有权访问/tmp
(即任何其他同一主机上的客户)可以访问会话数据的序列化形式,并可能使用它来显示经过身份验证。
这对我来说是学习会话处理、HTTP 标头等的好方法,而且使用起来感觉比标准的 PHP 方法好得多。
我检查身份验证cookie。
我不会再自己管理它了。有太多事情会出错。相反,我会像 stackoverflow.com 一样使用OpenID 。
我不知道这是否是最好的方法,但我习惯于创建用户类并在创建新会话时创建对象。我将此对象存储到会话中,并且我习惯于将会话变量链接到环境变量,只是为了避免处理 $_SESSION 数组。这样,您可以将登录方法和登录状态保存在对象本身内部,以及与用户相关的所有信息(姓名、姓氏、访问级别等)
类似的东西:
include('user.class.php');
session_start();
if(!isset($_SESSION['user']))
{
$_SESSION['user'] = new User();
}
$USER = &$_SESSION['user'];
这不是一篇新文章,但这个系统非常好。原始文章可能有一些更新。