在php中管理登录

时间:2010-10-15 13:37:17

标签: php loginstatus

显然我有自己的意见和做法,但我很想知道是否有更好的方法。

如何管理登录,即在仅为会员提供内容之前检查用户是否使用有效登录登录。

6 个答案:

答案 0 :(得分:4)

  • 使用$_SESSION s
  • 使用session_start();
  • 开始每一页
  • 检查成员内容($_SESSION
  • 的自定义$_SESSION['username']变量
  • 如果未显示您的变量,请显示登录表单
  • 成功登录后,将$_SESSION['username']设置为当前登录用户的昵称

注意:这是管理登录的简要说明,这里有很多东西没有描述。您应该避免使用不同的安全漏洞,例如sql injectionsession-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非常好。最初的文章可能有一些更新的更新。