如何创建一个PHP函数或类来检查半管理员用户(从MySQL数据库设置)是否具有某些权限,如创建新页面、编辑或删除?我需要一个检查用户权限的函数,然后显示如下代码:
if ($he_can_create_page){
//continue the script.....
}else{
//don`t continue
}
目前我使用的会话如下:
If($_SESSION['user_type']=='Admin'||$_SESSION['user_type']=='premium'){
//do stuff
}else if()......... {
// ..............
}
但是它们变得太多if语句,并且我想要一个更干净的代码:)
发布于 2013-05-05 21:26:01
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;
}
...
}
然后从你在数据库中得到的
if ($row['user_type'] == 'Admin') {
$user = new Admin();
} else if $row['user_type'] == 'Editor') {
$user = new Editor();
} ....
在您的所有页面中:
if ($user->canCreatePage()){
//continue the script.....
}else{
//don`t continue
}
如果要在第一次从dataBase获取用户时将其存储在会话中
$_SESSION['user'] = serialize($user);
在下一页中
$user = unserialize($_SESSION['user']);
或者,您也可以将用户的id存储在会话中,然后在每个页面上从de DB中获取它。
发布于 2013-05-05 21:14:27
在用户表中添加列,如下所示:
| canEdit | canDelete | canCreate |
标志为1/0。1代表true,0代表false。
选择字段并进行检查,例如:
if($row['canEdit'] = 1) {
//continue (return true)
}
else {
//stop (return false)
}
您可以使其成为一个带参数的函数,因此您将为函数提供参数,即$canDelete (这是您的$row数据),它只检查该权限
function userPermissions($type)
if($type=1) {
return true;
}
else {
return false;
}
$canCreate = $row['canCreate'];
if(userPermissions($canCreate)) { ...
发布于 2013-05-05 21:14:58
创建一个通用函数,并将其放入一个所有文件通用的文件中,如下所示
function pageCreatePermission() {
if($_SESSION['user_type']=='Admin'||$_SESSION['user_type']=='premium'){
return true;
} else {
return false;
}
然后在您的文件中使用如下所示的函数
if (pageCreatePermission()) {
//do your stuff
} else {
//show error you want
}
https://stackoverflow.com/questions/16384767
复制相似问题