0

我在 DB 中有一张表,其中放置了所有管理员及其权限。我正在使用字母 AZ 设置权限,并且每个字母都可以访问其他内容。问题是我想检查他们在哪里可以访问并仅显示这些区域的链接。现在我有了一个想法,用 for 循环将所有这些字母放在某个数组中,然后在渲染菜单时只输出他们可以访问的那些项目,if (in_array(letter, rights))我认为这会起作用,但我想知道是否有另一种方法

4

1 回答 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 回答