这个算不算是bug呢?
2016-07-07 15:03 来源:www.chinab4c.com 作者:ecshop专家
ecshop的代码刚看到权限分配这里,发现了一个问题。 在admin/privilege.php?act=allot,有这么一段代码: foreach ($action_group['priv'] AS $key => $val) { $priv_arr[$action_id]['priv'][$key]['cando'] = (strpos($priv_str, $val['action_code']) !== false || $priv_str == 'all') ? 1 : 0; } 外面的循环是在把admin_action表中的所有权限循环出来。 里面的语句,$priv_str保存了管理员所具有的所有权限,逗号相隔;$val['action_code']保存了当前循环所得的权限,通过strpos函数来比对,如果$priv_str中存在$val['action_code'],就说明管理员具有当前的权限,$priv_arr[$action_id]['priv'][$key]['cando']就赋值为 1,反之为0. 如果等于1,权限列表的checkbox的checked就为true,反之为false。 但是这里比对的方法是用的是strpos函数,问题就出现了。 比如:languages/zh_cn/admin/priv_action.php文件中,有一行:$_LANG['goods_manage'] = '商品添加/编辑';,我再在这个文件中添加一行:$_LANG['goods_manage_all'] = '全部商品添加/编辑';然后在admin_action表中增加条记录 "insert into admin_action values (0,1,'goods_manage_all')", 再执行admin/privilege.php?act=allot页面,就有了'全部商品添加/编辑'这个选项了。 现在开始给一个管理员分配权限,我只选择'全部商品添加/编辑',不选择'商品添加/编辑',点击保存,然后再进入给管理分配选项的页面,可以看到,明明我没有选择 '商品添加/编辑',但是 '商品添加/编辑' 这个选项被勾上了。 把这个情况用刚才的代码解释就是:strpos('goods_manage_all', 'goods_manage'); 不知道这个算是一个bug吗? |
回答:
这个代码不是很规范,应该算一个小bug吧,要验证得更严格一些,最好用"=="去经较,肯定不会出错的 |
最近更新
常用插件
- ecshop二次商品订购人信息
ecshop二次商品订购人信息填写插件,有时候给朋友送花,或者是送礼品的...
- ecshop商品分类名称增加样
ecshop插件介绍:本插件可以方便在后台管理,为ecshop商品分类名称增加样...
- ecshop二次开发详细页面生
插件介绍: ECSHOP系统,在很多时候,很多商品没有人购买,不但购买的人...
- ecshop分类批量扩展插件
ecshop分类批量扩展插件,这个插件是ecshop插件里面比较核心的插件。我们...
- ecshop2.7.1打印发货单插件
ecshop2.7.1打印发货单插件介绍:ecshop2.7.1和以前的ecshop版本不一样,ecs...
ecshop热门问答
ecshop热门资料
ecshop容量
ecshop得不到
ecshop网上商城
ecshop加强购物车
ecshop希望
ecshopQQ昵称
ecshopshopex模板制作
ecshop文章发布模块
ecshop后台路径修改
ecshop安裝時
ecshop英文版本
ecshop批量赠送不同类型红包
ecshop分类商品的排行
ecshop变量
ecshop文章编辑
ecshop台卡
ecshopEcshop
ecshop哈哈
ecshop页脚居中
ecshop模块
ecshop入口
ecshopflase
ecshop商品生成代码
ecshop长沙
ecshophttp
ecshopppg
ecshop订单问题
ecshopGzip
ecshop技巧
ecshop404