发布网站后如何确定用户角色?

时间:2018-12-16 21:03:05

标签: php mysql sql database phpmyadmin

我正在创建一个具有两种不同类型的用户(管理员和普通用户)的网站,我已经阅读了很多有关如何通过PHP和SQl根据用户类型创建不同页面的信息,并且我注意到其中的大多数用户创建帐户后,通过数据库确定用户的角色(称为类型,角色等的字段)。

所以我的问题是,如果我发布网站,如何确定用户类型/角色?

每次新用户登录时,我是否都必须每次都返回数据库以指定用户的类型/角色!

2 个答案:

答案 0 :(得分:0)

您想利用会话的概念。

来自the W3C docs

  

会话是一种用于存储要在多个页面中使用的信息(以变量形式)的方法。

     

与cookie不同,信息不会存储在用户计算机上。

用户登录时,可以从数据库中加载其信息,并将其角色信息存储在其会话中。然后,对于同一用户的所有后续请求,您无需再次从数据库中查找该信息:您可以直接从会话中获取该信息。

此方法的缺点是,如果在会话的生存期内用户的角色在数据库中更改,则此更改将不会反映在会话中。通常,只有在用户注销时,才可以破坏会话。因此,用户通常需要注销/登录才能使角色更改生效。

答案 1 :(得分:0)

假设您将它们都存储在同一张表中,然后在签名后必须以普通用户身份登录每个用户,然后才能确定这是哪种类型的用户,并为他们提供更安全的适当用户级别,这意味着您必须从那里创建另一个管理面板,您可以更改用户级别和新用户,因此您不必访问phpmyadmin面板。问题是,如果有选择方法,我不明白您是如何决定的,那么我建议您以这种方式轻松地为管理员和普通用户程序编写算法。

好吧,我想我明白了。我们应该确定他们在创建帐户时是哪种类型的用户,例如,在创建帐户时,您可以问一个问题,例如他们有多少年有效期,因此,假设他们有4年以上的有效期,那么这是一个管理帐户,如果如果过期少于4年,那是正常帐户。只是不要让用户知道您如何确定帐户类型。我认为让自己拥有一个单独的超级管理员面板更好,因为只有这样,您才能决定自己是哪一个

Userid  |  usertype    |       usernam
  1         |        1            |         jhone
  2         |        2            |         mark

用户类型1 =管理员 用户类型2 =普通用户

您应该使用的表结构

每当他们登录时,查询db并将信息存储在会话中,具体情况取决于$ _session ['userid']和$ _session ['role / type']