PHP&;MySQL用户登录和权限系统
我有一个用PHP和MySQL建立的网站的用户登录系统。我的问题是我是否可以修改我现在拥有的,以创建一个“权限”系统。换句话说,只为用户显示某些控件,为管理员显示不同的控件。在我的mysql表中,我有PHP&;MySQL用户登录和权限系统,php,mysql,Php,Mysql,我有一个用PHP和MySQL建立的网站的用户登录系统。我的问题是我是否可以修改我现在拥有的,以创建一个“权限”系统。换句话说,只为用户显示某些控件,为管理员显示不同的控件。在我的mysql表中,我有'id','username','password',以及一个带有“a”和“b”的枚举“permissions”“a”是默认值(不是管理员)。下面我将向你展示我的尝试 这个文件是“checklogin.php”(为了节省空间,我不会添加所有代码) 因此,在这个文件中,我将检查表中有多少行与用户输入匹配
'id'
,'username'
,'password'
,以及一个带有“a”和“b”的枚举“permissions”“a”是默认值(不是管理员)。下面我将向你展示我的尝试
这个文件是“checklogin.php
”(为了节省空间,我不会添加所有代码)
因此,在这个文件中,我将检查表中有多少行与用户输入匹配,以及是否为admin,如果有,则使用用户名、密码和权限注册会话
接下来,我有一个文件“login\u success.php
”
登录成功
上面的代码只是检查会话是否已注册,如果未注册,则返回登录表单。下面是一段代码,用于检查用户是否是管理员。
登录部分的工作,我只是无法计算出权限
所以最后,我想我的问题是为什么这不起作用?这在逻辑上似乎是正确的。很抱歉邮件太长。感谢您的帮助。我建议您遵循以下逻辑:如果用户的某个列中有“a”,那么您将以不同的方式对待他。这意味着每个用户只会出现一行。只有一次会议。同样的数据结构。同一届会议。但是,基于“权限”列的价值,您可以在应用程序中为他打开更多的“门”。你要做的一切就是检查他会话的“权限”是否设置为“a”或任何标识他为管理员的内容 希望这有帮助。
maxim我向您建议如下逻辑:如果用户的某个列中有“a”,那么您将以不同的方式对待他。这意味着每个用户只会出现一行。只有一次会议。同样的数据结构。同一届会议。但是,基于“权限”列的价值,您可以在应用程序中为他打开更多的“门”。你要做的一切就是检查他会话的“权限”是否设置为“a”或任何标识他为管理员的内容 希望这有帮助。
maxim首先,您使用的是弃用的
会话\u寄存器,会话\u已注册
。Php手册建议使用$\u会话
session\u已注册
需要字符串,但您不传递字符串-它应该类似于session\u已注册(“admin”)
,而不是session\u已注册(admin)
此外,我认为你可以改进整个程序:
从$tbl\u name中选择*其中username='$myusername'
(假设$myusername正确转义)李>
首先,您使用的是弃用的
会话\u寄存器,会话\u已注册
。Php手册建议使用$\u会话
session\u已注册
需要字符串,但您不传递字符串-它应该类似于session\u已注册(“admin”)
,而不是session\u已注册(admin)
此外,我认为你可以改进整个程序:
从$tbl\u name中选择*其中username='$myusername'
(假设$myusername正确转义)李>
首先,您很懒,有引号,例如在下面几行:
$user=a;
$admin=b;
if(!session_is_registered(myusername)){
但我不知道这是否是问题所在
其次,在使用会话之前,需要调用session\u start()
你为什么不做下面的查询呢
SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'
然后,您可以读取返回的权限,而不必处理复杂的双重查询设置。
当然,您必须确保没有重复的用户名,但始终如此。首先,您不喜欢使用引号,例如在以下几行中:
$user=a;
$admin=b;
if(!session_is_registered(myusername)){
但我不知道这是否是问题所在
其次,在使用会话之前,需要调用session\u start()
你为什么不做下面的查询呢
SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'
然后,您可以读取返回的权限,而不必处理复杂的双重查询设置。
当然,您必须确保没有重复的用户名,但始终如此。没错,很多地方都缺少引号。。。这是一种非常糟糕的编码风格,而且让
PHP
允许它语法化是一种耻辱。现在这是一种临时代码。。。当我做session时,它是注册的(admin),没有引号,它不是在检查之前声明的$admin吗?我相信我能够检查权限,但如何在多个页面上存储权限信息?注册会话?谢谢@DenimVallorosi:通常你们注册会话,并在那个里存储一些关于用户的信息,这样你们就不必每次都查询数据库了。我更喜欢定义一个类,该类包含基本用户数据的字段,几乎每个页面都需要这些数据(比如用户名、电子邮件、头像、角色等),并在会话中存储和实例该类。许多其他人使用数组而不是类。@a1ex07是的,我知道关于注册会话。由于某种原因,我在另一个专栏中获取信息并注册时遇到了困难。我的逻辑正确吗