Php 权限组工作不正常
好的,我已经建立了一个基本的会员制,在我的数据库中有组(成员、管理员和版主)。 这些组有3个字段:id、名称和权限。成员我的权限为空,管理员有{“admin”:1 “主持人”:1},主持人有{“主持人”:1} 我在文件夹Php 权限组工作不正常,php,mysql,permissions,membership,Php,Mysql,Permissions,Membership,好的,我已经建立了一个基本的会员制,在我的数据库中有组(成员、管理员和版主)。 这些组有3个字段:id、名称和权限。成员我的权限为空,管理员有{“admin”:1 “主持人”:1},主持人有{“主持人”:1} 我在文件夹classes中的user.php文件中有一个简单的函数 功能 class User { public function hasPermission($key) { $group = $this->_db->query("SELECT
classes
中的user.php
文件中有一个简单的函数
功能
class User {
public function hasPermission($key) {
$group = $this->_db->query("SELECT * FROM groups WHERE id = ?", array($this->data()->group));
if($group->count()) {
$permissions = json_decode($group->first()->permissions, true);
if($permissions[$key] === 1) {
return true;
}
}
return false;
}
}
然后,在一个文件admin.php
中,我有一段简单的代码,如果登录的用户是admin,则应该显示一个echo
ps:我需要init.php
文件,该文件包含所需的classes/User.php
文件,因此我不需要调用多个文件
代码
<?php
}
if($user->hasPermission('admin')) {
echo '<p>You are a admin!</p>';
} else {
echo 'You need to <a href="login.php">log in</a> or <a href="register.php">register</a>!';
}
?>
当管理员登录时,应该显示回显,不幸的是,我只是得到一个空白页面
问题
class User {
public function hasPermission($key) {
$group = $this->_db->query("SELECT * FROM groups WHERE id = ?", array($this->data()->group));
if($group->count()) {
$permissions = json_decode($group->first()->permissions, true);
if($permissions[$key] === 1) {
return true;
}
}
return false;
}
}
所以我的问题是,有没有人知道为什么这不起作用,因为我有一个管理员权限集用户登录,但在admin.php
上什么都没有
组表
用户表
好吧,出于某种原因,您需要登录或注册!echo显示它无法识别管理员何时登录
我所要做的就是允许不同的组访问不同的页面,因为我之前的答案被删除了。。再来一次 您的问题是您在此处执行的类型安全比较:
if($permissions[$key] === true) {
return true;
}
您的数组是由json对象{“版主”:1}
填充的,在php中,该对象转换为array('mediator'=>1)
。您正在使用类型安全比较将布尔值true
与整数1
进行比较。这将失败,因为类型不匹配。有关更多详细信息,请参阅
您可以通过使用类型不安全比较或将$permissions
转换为布尔值来解决此问题
if ((bool)$permissions[$key] === true) // Both are now of type boolean and will be compared.
或
好吧,因为我之前的答案被删除了。。再来一次 您的问题是您在此处执行的类型安全比较:
if($permissions[$key] === true) {
return true;
}
您的数组是由json对象{“版主”:1}
填充的,在php中,该对象转换为array('mediator'=>1)
。您正在使用类型安全比较将布尔值true
与整数1
进行比较。这将失败,因为类型不匹配。有关更多详细信息,请参阅
您可以通过使用类型不安全比较或将$permissions
转换为布尔值来解决此问题
if ((bool)$permissions[$key] === true) // Both are now of type boolean and will be compared.
或
好吧,因为我之前的答案被删除了。。再来一次 您的问题是您在此处执行的类型安全比较:
if($permissions[$key] === true) {
return true;
}
您的数组是由json对象{“版主”:1}
填充的,在php中,该对象转换为array('mediator'=>1)
。您正在使用类型安全比较将布尔值true
与整数1
进行比较。这将失败,因为类型不匹配。有关更多详细信息,请参阅
您可以通过使用类型不安全比较或将$permissions
转换为布尔值来解决此问题
if ((bool)$permissions[$key] === true) // Both are now of type boolean and will be compared.
或
好吧,因为我之前的答案被删除了。。再来一次 您的问题是您在此处执行的类型安全比较:
if($permissions[$key] === true) {
return true;
}
您的数组是由json对象{“版主”:1}
填充的,在php中,该对象转换为array('mediator'=>1)
。您正在使用类型安全比较将布尔值true
与整数1
进行比较。这将失败,因为类型不匹配。有关更多详细信息,请参阅
您可以通过使用类型不安全比较或将$permissions
转换为布尔值来解决此问题
if ((bool)$permissions[$key] === true) // Both are now of type boolean and will be compared.
或
我们需要查看正在生成的代码
$user
我在其他
确定之前看到一个不需要的}
我将修改额外的}并将$user代码添加到答案中。我们需要查看正在生成的代码$user
我在其他
确定之前看到一个不需要的
我将修改额外的}并将$user代码添加到答案中答案。我们需要查看正在生成的代码$user
我在其他
确定之前看到一个不需要的}
我会修改额外的}并将$user代码添加到答案中。我们需要查看正在生成的代码$user
我在其他
确定之前看到一个不需要的
我会修改额外的}并添加$user代码。您能提供一些关于这些变量内容的更多信息吗?对$permissions
执行一些var_转储,这样您就可以看到实际比较的内容。当你这样做的时候,还要确保你已经通过了if($group->count()){部分。帮我一个忙,用这个更新if($group->count()){part:if($group->count()){$permissions=$group->first()->permissions;var_dump($permissions);$permissions=json\u decode($group->first()->权限,true);var_dump($permissions);var_dump($permissions[$key]);if($permissions[$key]==1){return true;}}否则{echo“无组结果!”;}
现在请执行它并发布输出。感谢您的帮助。最后出现了一个小的拼写错误…我的错,谢谢您的帮助。您能提供一些关于这些变量内容的更多信息吗?对$permissions
执行一些变量转储,以便您可以看到您实际与之进行比较的内容。当您进行此操作时,一个请帮我一个忙,用以下内容更新if($group->count()){part:if($group->count()){part:if($group->count()){$permissions=$group->first()->permissions;var_dump($permissions);$permissions=json\u decode($group->first()->permissions,true);var_dump($permissions);var_dump($permissions[$key]);