发布
社区首页 >问答首页 >在php中检查用户权限

在php中检查用户权限
EN

Stack Overflow用户
提问于 2013-05-05 20:58:36
回答 4查看 5.9K关注 0票数 1

如何创建一个PHP函数或类来检查半管理员用户(从MySQL数据库设置)是否具有某些权限,如创建新页面、编辑或删除?我需要一个检查用户权限的函数,然后显示如下代码:

代码语言:javascript
代码运行次数:0
复制
  if ($he_can_create_page){
  //continue the script.....
  }else{
  //don`t continue
   }

目前我使用的会话如下:

代码语言:javascript
代码运行次数:0
复制
    If($_SESSION['user_type']=='Admin'||$_SESSION['user_type']=='premium'){
 //do stuff
 }else if()......... {
  // ..............
   }

但是它们变得太多if语句,并且我想要一个更干净的代码:)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-05 21:26:01

代码语言:javascript
代码运行次数:0
复制
interface User {

    public function canCreatePage();
    public function canDeletePage();
    public function canEditPage();
    ....
}

class Admin implements User {

    public function canCreatePage(){
        return true;
    }

    public function canEditPage(){
        return true;
    }
    ...
}

class Editor implements User {

     public function canCreatePage() {
          return false;
     }

     public function canEditPage(){
        return true;
     }

     ...

}

然后从你在数据库中得到的

代码语言:javascript
代码运行次数:0
复制
if ($row['user_type'] == 'Admin') {
   $user = new Admin();
} else if $row['user_type'] == 'Editor') {
   $user = new Editor();
}  ....

在您的所有页面中:

代码语言:javascript
代码运行次数:0
复制
if ($user->canCreatePage()){
  //continue the script.....
}else{
  //don`t continue
}

如果要在第一次从dataBase获取用户时将其存储在会话中

代码语言:javascript
代码运行次数:0
复制
$_SESSION['user'] = serialize($user);

在下一页中

代码语言:javascript
代码运行次数:0
复制
$user = unserialize($_SESSION['user']);

或者,您也可以将用户的id存储在会话中,然后在每个页面上从de DB中获取它。

票数 3
EN

Stack Overflow用户

发布于 2013-05-05 21:14:27

在用户表中添加列,如下所示:

代码语言:javascript
代码运行次数:0
复制
| canEdit | canDelete | canCreate |

标志为1/0。1代表true,0代表false。

选择字段并进行检查,例如:

代码语言:javascript
代码运行次数:0
复制
if($row['canEdit'] = 1) {
//continue (return true)
}
else {
//stop (return false)
}

您可以使其成为一个带参数的函数,因此您将为函数提供参数,即$canDelete (这是您的$row数据),它只检查该权限

代码语言:javascript
代码运行次数:0
复制
function userPermissions($type)
 if($type=1) {
   return true;
 }
 else {
   return false;
 }


$canCreate = $row['canCreate'];

if(userPermissions($canCreate)) { ...
票数 0
EN

Stack Overflow用户

发布于 2013-05-05 21:14:58

创建一个通用函数,并将其放入一个所有文件通用的文件中,如下所示

代码语言:javascript
代码运行次数:0
复制
 function pageCreatePermission() {
     if($_SESSION['user_type']=='Admin'||$_SESSION['user_type']=='premium'){

          return true;

     } else { 
          return false;
}

然后在您的文件中使用如下所示的函数

代码语言:javascript
代码运行次数:0
复制
if (pageCreatePermission()) {
     //do your stuff
 } else {
     //show error you want
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16384767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档