Php 登录表结构

Php 登录表结构,php,mysql,Php,Mysql,我有一个数据库“实践”。我试图建立一个允许用户登录并以表单形式提交数据的数据库 管理员为少数用户添加用户名和密码。然后用户使用密码和用户名登录 现在,由于管理员添加了用户,他的功能必须与用户不同,并且要为他加载不同的页面,以便识别管理员 authenticate table username | password | admin ---------------------------- admin | 7821y34n | 1 007 | 435432 | 0 admin的

我有一个数据库“实践”。我试图建立一个允许用户登录并以表单形式提交数据的数据库

管理员为少数用户添加用户名和密码。然后用户使用密码和用户名登录

现在,由于管理员添加了用户,他的功能必须与用户不同,并且要为他加载不同的页面,以便识别管理员

authenticate table
username | password | admin
----------------------------
admin    | 7821y34n | 1
 007     |  435432  | 0
admin的类型为tinyint
如果为1,则为admin如果为0,则为user

这是创建身份验证表的方法吗?

一个好的做法是将
角色
表映射到
用户
表,这样用户可以有多个角色

对于您的第二个问题,正如我在评论中所说的,我会将所有数据放在
user
表中,但是如果您需要在两个表中分离数据,您可以这样做

只需将
user\u详细信息
表映射到
user
表即可。(
用户详细信息中的
用户id

用户

ID | USERNAME | PASSWORD  
-------------------------
1  | bill     | 09hk4352  /* password should be encoded */
2  | frank    | 7dfs3454 
用户详细信息

ID | DOB         | USER_ID      
------------------------
2  | 1988-05-12  | 1  
角色

ID | ROLE 
---------------
1  | ROLE_USER 
2  | ROLE_ADMIN  
3  | ROLE_GUEST
ROLE_ID | USER_ID
------------------
1       | 2 /* user "frank" has ROLE_USER */
2       | 2 /* user "frank" has also ROLE_ADMIN */
1       | 1 /* user "bill" has ROLE_USER */
用户角色

ID | ROLE 
---------------
1  | ROLE_USER 
2  | ROLE_ADMIN  
3  | ROLE_GUEST
ROLE_ID | USER_ID
------------------
1       | 2 /* user "frank" has ROLE_USER */
2       | 2 /* user "frank" has also ROLE_ADMIN */
1       | 1 /* user "bill" has ROLE_USER */

一个好的做法是将
角色
表映射到
用户
表,这样用户可以有多个角色

对于您的第二个问题,正如我在评论中所说的,我会将所有数据放在
user
表中,但是如果您需要在两个表中分离数据,您可以这样做

只需将
user\u详细信息
表映射到
user
表即可。(
用户详细信息中的
用户id

用户

ID | USERNAME | PASSWORD  
-------------------------
1  | bill     | 09hk4352  /* password should be encoded */
2  | frank    | 7dfs3454 
用户详细信息

ID | DOB         | USER_ID      
------------------------
2  | 1988-05-12  | 1  
角色

ID | ROLE 
---------------
1  | ROLE_USER 
2  | ROLE_ADMIN  
3  | ROLE_GUEST
ROLE_ID | USER_ID
------------------
1       | 2 /* user "frank" has ROLE_USER */
2       | 2 /* user "frank" has also ROLE_ADMIN */
1       | 1 /* user "bill" has ROLE_USER */
用户角色

ID | ROLE 
---------------
1  | ROLE_USER 
2  | ROLE_ADMIN  
3  | ROLE_GUEST
ROLE_ID | USER_ID
------------------
1       | 2 /* user "frank" has ROLE_USER */
2       | 2 /* user "frank" has also ROLE_ADMIN */
1       | 1 /* user "bill" has ROLE_USER */


看起来不错,不过我不会养成用纯文本存储密码的习惯。此外,如果您有太多的角色,或者希望将多个角色与一个用户关联,则可能需要创建一个
角色
表,该表可以将角色映射到用户。如果您只有两种类型,则可以这样做。或者,您可以将user_type_id作为外键,该外键为多个用户级别引用另一个类似user_type的表。通过@Mike和Sam加密密码是的,我正在通过一些关于密码加密的SO Q/a。但是,我对第二个表的用户_详细信息有一个小问题。“现在第二个表需要username列来更新与非管理员用户相关的名称和其他值,那么我应该如何创建列?再次插入用户名会导致数据冗余。你能解释一下在这种情况下如何使用外键吗?看起来不错,不过我不会养成用纯文本存储密码的习惯。此外,如果您有太多的角色,或者希望将多个角色与一个用户关联,则可能需要创建一个
角色
表,该表可以将角色映射到用户。如果您只有两种类型,则可以这样做。或者,您可以将user_type_id作为外键,该外键为多个用户级别引用另一个类似user_type的表。通过@Mike和Sam加密密码是的,我正在通过一些关于密码加密的SO Q/a。但是,我对第二个表的用户_详细信息有一个小问题。“现在第二个表需要username列来更新与非管理员用户相关的名称和其他值,那么我应该如何创建列?再次插入用户名将导致数据冗余。您能解释一下在这种情况下如何使用外键吗?第二个表还需要username列来更新与非管理员用户相关的名称和其他值,所以我应该如何创建列?再次插入用户名会导致数据冗余。你能解释一下在这种情况下如何使用外键吗?我不明白你的问题,请你说清楚一点好吗?我有第二个表用户\u详细信息表还需要一个用户名列(非管理员用户)。目前所有用户名都是由管理员添加的。在第二个表中添加相同的用户名是不正确的,因此我如何使用外键进行此操作?请您解释一下,您是否可以使用
user\u details
结构更新您的帖子?我认为您实际上不需要user\u ROLE表,这太费事了。当您必须执行5个
JOIN
s时,它将无法正常工作。相反,您可以在用户表中设置ROLE_ID列。第二个表还需要username列来更新与非管理员用户相关的名称和其他值,那么我应该如何创建列?再次插入用户名会导致数据冗余。你能解释一下在这种情况下如何使用外键吗?我不明白你的问题,请你说清楚一点好吗?我有第二个表用户\u详细信息表还需要一个用户名列(非管理员用户)。目前所有用户名都是由管理员添加的。在第二个表中添加相同的用户名是不正确的,因此我如何使用外键进行此操作?请您解释一下,您是否可以使用
user\u details
结构更新您的帖子?我认为您实际上不需要user\u ROLE表,这太费事了。当您必须执行5个
JOIN
s时,它将无法正常工作。相反,您可以只在用户表中设置ROLE_ID列。