uchome: 权限实现-pg电子平台

大家好!今天让小编来大家介绍下关于uchome: 权限实现的问题,以下是酷知号的小编对此问题的归纳整理,让我们一起来看看吧。

uchome的权限是通过实现的。

uchome的用户组分为三类:普通用户组,特殊用户组,系统用户组。普通用户组的用户根据经验值的变化自动升级或降级到另外一个普通用户组,特殊用户组和系统用户组的用户不受经验值的变化而改变用户组。普通用户组只能管理用户自己的空间,特殊用户组和系统用户组不仅能管理自己的空间,还能管理站点。

所有的用户组信息都存放在usergroup表(http://www.nextphp.com/upload/uchome2.0_datadict.html)中,栏位system表示组的类型:0代表普通用户组,-1代表系统用户组,1代表特殊用户组。

用户组的每一个具体权限对应到usergroupd表的一个栏位,例如,管理ip地址权限对应到usergroup表的manageip栏位,1代表允许,0代表禁止。

有两个特殊的权限:banvisit和manageconfig。banvist控制用户组成员允许访问或者禁止访问网站,manageconfig控制用户组成员是否拥有管理员身份,管理员身份可以管理网站的各项设置,通俗的说,就是所有以manage开始的权限。

网站的创建者也拥有所有的manage权限。创建者在config.php文件中通过$_sc[‘founder’]设置,可以有多个创建者,之间用逗号分隔。

1. 权限的使用

if (!checkperm('allowblog')) { //检查是否有发表日志的权限
  cpmessage('no_authority_management_operation');
}
if (!checkperm('manageip')) { //检查是否有管理ip设置的权限
  cpmessage('no_authority_management_operation');
}

2. checkperm()函数
checkperm()函数存在function_common.php文件中,执行具体的权限检查处理:

function checkperm($permtype) 
{
  global $_sglobal, $space;
  if($permtype == 'admin') $permtype = 'manageconfig';
  $var = 'checkperm_'.$permtype;
  if(!isset($_sglobal[$var])) {
    if(empty($_sglobal['supe_uid'])) {
      $_sglobal[$var] = '';
    } else {
      if(empty($_sglobal['member'])) getmember();
      $gid = getgroupid($_sglobal['member']['experience'], $_sglobal['member']['groupid']);
      if(!@include_once(s_root.'./data/data_usergroup_'.$gid.'.php')) {
        usergroup_cache();
        @include_once(s_root.'./data/data_usergroup_'.$gid.'.php');
      }
      if($gid != $_sglobal['member']['groupid']) {
        updatetable('space', array('groupid'=>$gid), array('uid'=>$_sglobal['supe_uid']));
        if($_sglobal['usergroup'][$gid]['magicaward']) {
          include_once(s_root.'./source/inc_magicaward.php');
        }
      }
      
      $_sglobal[$var] = empty($_sglobal['usergroup'][$gid][$permtype])?'':$_sglobal['usergroup'][$gid][$permtype];
      if(substr($permtype, 0, 6) == 'manage' && empty($_sglobal[$var])) {
        $_sglobal[$var] = $_sglobal['usergroup'][$gid]['manageconfig'];//
        if(empty($_sglobal[$var])) {
          $_sglobal[$var] = ckfounder($_sglobal['supe_uid'])?1:0;//?
        }
      }
    }
  }
  return $_sglobal[$var];
}

以上就是小编对于uchome: 权限实现问题和相关问题的解答了,uchome: 权限实现的问题希望对你有用!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文链接:https://www.andon8.com/441866.html

网站地图