ecshop 菜单显示原理

来源:互联网 发布:洗面奶推荐知乎 编辑:程序博客网 时间:2024/05/20 04:30

语言数组

 语言数组,显示名 $_LANG['21_promote_user'] = '地推管理'; $_LANG['promote_user_add'] = '地推人员列表'; $_LANG['promote_user_list'] = '增加地推人员'; $_LANG['fq_user_list'] = '发券人列表'; $_LANG['fq_user_add'] = '增加发券人';

ecshop位置是在 languages/zh_cn/admin/conmon.php

菜单数组

 $modules['21_promote_user']['promote_user_add'] = 'promote_user.php?   act=list'; $modules['21_promote_user']['fq_user_list'] = 'fq_user.php?act=list'; $modules['21_promote_user']['fq_user_add'] = 'fq_user.php?act=add'; 其中 key值是菜单标志 ,两个key说明是菜单一级与二级, value是菜单链接, 菜单中文名字将key对应到语言数组 key也是通过权限数组的value,能查出当前菜单对应的权限

ecshop的位置是在admin/includes/inc_menu.php

权限数组

“`
purview[promoteuseradd]=promoteuseradd;//purview[‘promote_user_list’] = ‘promote_user_list’;//地推人员列
purview[fquserlist]=fquserlist;//purview[‘fq_user_add’] = ‘fq_user_add’;//增加发券人

    key值对应权限标志,与权限表(admin_action对应)    value 对应菜单数组的key,能查出这个权限对   验证权限必须是admin_priv()函数,   如果只是单纯的将菜单隐藏,并没有admin_priv()去验证,权限相当于没有用上

“`qu

权限表

1、admin_action 权限表 所有权限都在这个表里2、adiin_user   管理员表 有个字段,记录此管理员有多少权限

给管理员加权限

用到的
1、权限表(admin_action)
2、语言数组
3、管理员表(admin_user)

一、总管理员给小管理员加权限二、在一个界面,将权限表遍历出来,对应语言数组显示中文三、勾选权限,增加到管理员表的 权限字段

显示菜单

遍历菜单数组,然后用它的key匹配权限数组    如果在权限数组里能匹配到,判断匹配的权限是否在管理员所拥有的权限里   在就显示菜单,不再说明此菜单对应的权限,当前登录的管理员并没有,不显示如果菜单没有匹配到权限数组,直接显示菜单(ecshop为显示,讲道理为不显示)

ps:
管理员权限:在管理员登陆就存在session里
权限数组:应该与权限数据表统一
显示菜单遍历的只是数组,与数据库无交互,可减少响应时间
ecshop 在菜单没有匹配到权限数组也让菜单显示,可能是因为怕本地权限数组与权限表没统一,导致应该有的菜单权限没有显示出来。
同时没有权限的菜单数组也显示出来,这个没关系,因为对于一些不在菜单栏显示的功能设置的权限,需要再次验证

验证权限

1、代码函数 admin_priv(“promote_user_add”)
2、管理员所拥有的权限(session)

在执行某个功能时,这个功能需要管理员 拥有xx权限才能执行
则在编码时加上admin_priv(‘xx’);
此函数会将当前管理员的权限找出来(session),匹配到xx,代表能执行

比如:
菜单栏 【提现列表】权限,管理员A可以看到
提现列表有个【审核通过】并不显示在菜单栏中,
在执行审核通关过代码之前 admin_priv(“审核通过”);判断管理员A是否有审核通过权限

0 0
原创粉丝点击