显然我有自己的意见和做法,但我很想知道是否有更好的方法。
如何管理登录,即在仅为会员提供内容之前检查用户是否使用有效登录登录。
答案 0 :(得分:4)
$_SESSION
)$_SESSION['username']
变量
$_SESSION['username']
设置为当前登录用户的昵称注意:这是管理登录的简要说明,这里有很多东西没有描述。您应该避免使用不同的安全漏洞,例如sql injection,session-hijacking等)
答案 1 :(得分:2)
曾几何时,我创建了一个Session类,它在一个公共的include文件中实例化。它不是使用session_*
和$_SESSION
,而是使用带有客户端SID的cookie(我认为它是带有salt和一些迭代的SHA-256哈希)。在服务器上,客户端SID进入另一个哈希函数几次以获取服务器端SID,这是远程MySQL数据库中的主键。
为什么呢?因为该站点位于共享主机上,但会话需要是安全的,因为数据库保存了18岁以下人员的详细信息。默认情况下,PHP使用/tmp
作为将会话数据存储为序列化文件的位置,这意味着任何有访问权限的人到/tmp
(即同一主机上的任何其他客户)可以访问序列化形式的会话数据,并可能使用它来进行身份验证。
这是一个很好的方式让我了解会话处理,HTTP标头等。它比标准的PHP方式更好用。
答案 2 :(得分:1)
我检查身份验证Cookie。
答案 3 :(得分:1)
我不会再自己管理了。有太多的东西可以去错误。相反,我会像stackoverflow.com一样使用 OpenID 。
答案 4 :(得分:1)
我不知道这是否是最好的方法,但我习惯于在创建新会话时创建用户类并创建对象。 我将此对象存储到会话中,我习惯将会话var链接到环境变量,以避免处理$ _SESSION数组。 通过这种方式,您可以将登录方法和登录状态保存在对象本身内,以及与用户相关的所有信息(名称,姓氏,访问级别等)
类似的东西:
include('user.class.php');
session_start();
if(!isset($_SESSION['user']))
{
$_SESSION['user'] = new User();
}
$USER = &$_SESSION['user'];
答案 5 :(得分:0)
不是新文章,但this system非常好。最初的文章可能有一些更新的更新。