我在 DB 中有一张表,其中放置了所有管理员及其权限。我正在使用字母 AZ 设置权限,并且每个字母都可以访问其他内容。问题是我想检查他们在哪里可以访问并仅显示这些区域的链接。现在我有了一个想法,用 for 循环将所有这些字母放在某个数组中,然后在渲染菜单时只输出他们可以访问的那些项目,if (in_array(letter, rights))
我认为这会起作用,但我想知道是否有另一种方法
问问题
63 次
1 回答
1
我编写了一个 PHP 类,我在所有需要对不同角色进行不同访问的项目中使用该类。我将课程的副本放在粘贴箱上:class_role_restrictions.php。
这个类还需要我写的另一个类,可以在这里获取:better_mysqli.php
初始设置包括创建一些数据库表(SQL 创建语句位于 class_role_restrictions.php 文件末尾的注释中)并通过其管理界面添加角色/用户成员资格。
详细的设置/使用可以在这里获得:role_restrictions_detailed_example.php
设置完成后,您可以像这样使用它:
<?php
include_once('class_role_restrictions.php');
include_once('better_mysqli.php');
$mysqli = new better_mysqli('your_server', 'your_user', 'your_pass', 'your_db_name');
if (mysqli_connect_errno()) {
error_log(sprintf("Can't connect to MySQL Server. Errorcode: %s\n", mysqli_connect_error()));
exit;
}
$role = new role_restrictions($mysqli, 'http://your_server.com/path/to/this/page/example.php');
// == Restrict an entire page to authorized users only ==
$role->restrict_to('role_name, to_restrict user_to', 'username_currently_logged_in');
// .. now do stuff that only users in any of the roles listed are allowed to do
// -- OR --
// == Only do certain things if the username given is a member of any of the roles given ==
if( $role->has_role('a_list, of_roles, allowed', 'username_currently_logged_in') ){
// .. do stuff that only users in the given role(s) are allowed to do ..
}
?>
于 2013-07-23T17:50:38.373 回答