Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中管理登录_Php_Loginstatus - Fatal编程技术网

在php中管理登录

在php中管理登录,php,loginstatus,Php,Loginstatus,显然,我有自己的观点和方法,但我很好奇是否有更好的方法 如何管理登录,即在提供仅限成员的内容之前检查用户是否以有效登录方式登录。我检查身份验证cookie。 利用 每一页都以 检查成员内容的自定义会话变量($\u会话['username']) 如果未显示变量,则显示登录表单 成功登录后,将会话['username']设置为当前登录用户的昵称 注意:这是对管理登录的简要描述,这里有很多内容没有描述。你应该避免不同的安全漏洞,比如)我不再自己管理它了。有太多的事情会出错。相反,我会像stackov

显然,我有自己的观点和方法,但我很好奇是否有更好的方法


如何管理登录,即在提供仅限成员的内容之前检查用户是否以有效登录方式登录。

我检查身份验证cookie。

  • 利用
  • 每一页都以
  • 检查成员内容的自定义会话变量(
    $\u会话['username']
  • 如果未显示变量,则显示登录表单
  • 成功登录后,将会话['username']设置为当前登录用户的昵称

注意:这是对管理登录的简要描述,这里有很多内容没有描述。你应该避免不同的安全漏洞,比如)我不再自己管理它了。有太多的事情会出错。相反,我会像stackoverflow.com一样使用OpenID

从前,我创建了一个会话类,它在一个公共include文件中实例化。它没有使用
session.*
$\u session
,而是使用了一个带有客户端SID的cookie(我认为它是一个带有salt和一些迭代的SHA-256哈希)。在服务器上,客户端SID多次进入另一个哈希函数以获取服务器端SID,它是远程MySQL数据库中的主键

为什么??因为该网站是共享主机,但是会话需要安全,因为数据库保存了18岁以下的人的详细信息。PHP默认使用
/tmp
作为将会话数据存储为序列化文件的位置,这意味着任何可以访问
/tmp
的人(即同一主机上的任何其他客户)都可以访问序列化形式的会话数据,并可能使用它来显示身份验证


对我来说,这是一个学习会话处理、HTTP头等的好方法,使用它感觉比使用标准的PHP方式要好得多。

我不知道这是否是最好的方法,但我习惯于在创建新的会话时创建用户类和对象。 我将这个对象存储到会话中,并用于将会话变量链接到环境变量,以避免处理$\u会话数组。 通过这种方式,您可以将登录方法和登录状态以及与用户相关的所有信息(姓名、姓氏、访问级别等)保存在对象本身中

诸如此类:

include('user.class.php');
session_start();

if(!isset($_SESSION['user']))
{
   $_SESSION['user'] = new User();
}

$USER = &$_SESSION['user'];

这不是一篇新文章,但它非常好。原始文章可能有一些较新的更新。

即使它已关闭,您也可以使用openid。但为什么通过Cookie进行会话?$\u会话可以在服务器端轻松管理,因此您不必依赖用户的浏览器设置。(如果客户端不允许使用cookies。)当然,双方都有很多优点/缺点,因此最好的选择是将两者结合起来。