ecshop 后台角色管理的一些BUG修复
一、角色名为空也能“添加”和“修改”角色,点击保存到数据库;增加判断语句修复,避免此问题。
二、管理员分派角色管理权限,无法正常显示使用;修复检查权限的语句解决此问题。
三、角色“添加”、“删除”、“编辑”操作无记录管理员操作日志问题,增加记录管理员操作日志语句解决此问题。
四、角色名相同也能“添加”、“修改”点击保存到数据库,增加判断语句修复,避免此问题。
第一个问题解决过程
1,admin/role.php,增加判断语句代码
/*------------------------------------------------------ */ //-- 添加角色的处理 /*------------------------------------------------------ */ elseif ($_REQUEST['act'] == 'insert') { admin_priv('role_manage');//检查权限 $act_list = @join(",", $_POST['action_code']); /* 加入判断 */ if (empty($_POST['user_name'])) { sys_msg($_LANG['role_name_empty'], 1); } else { $sql = "INSERT INTO ".$ecs->table('role')." (role_name, action_list, role_describe) ". "VALUES ('".trim($_POST['user_name'])."','$act_list','".trim($_POST['role_describe'])."')"; $db->query($sql); /* 记录管理员操作 */ admin_log($_POST['user_name'], 'add', 'role'); } /* 转入权限分配列表 */ $new_id = $db->Insert_ID(); /*添加链接*/ $link[0]['text'] = $_LANG['admin_list_role']; $link[0]['href'] = 'role.php?act=list'; sys_msg($_LANG['add'] . " " .$_POST['user_name'] . " " . $_LANG['action_succeed'],0, $link); /* 记录管理员操作 */ admin_log($_POST['user_name'], 'add', 'role'); }
/*------------------------------------------------------ */ //-- 更新角色信息 /*------------------------------------------------------ */ elseif ($_REQUEST['act'] == 'update') { /* 更新管理员的权限 */ $act_list = @join(",", $_POST['action_code']); $sql = "UPDATE " .$ecs->table('role'). " SET action_list = '$act_list', role_name = '".$_POST['user_name']."', role_describe = '".$_POST['role_describe']." ' ". "WHERE role_id = '$_POST[id]'"; $db->query($sql); /* 加入判断 */ if (empty($_POST['user_name'])) { sys_msg($_LANG['role_name_empty'], 1); } else { $user_sql = "UPDATE " .$ecs->table('admin_user'). " SET action_list = '$act_list' ". "WHERE role_id = '$_POST[id]'"; $db->query($user_sql); /* 记录管理员操作 */ admin_log($_POST['user_name'], 'edit', 'role'); } /* 提示信息 */ $link[] = array('text' => $_LANG['back_admin_list'], 'href'=>'role.php?act=list'); sys_msg($_LANG['edit'] . " " . $_POST['user_name'] . " " . $_LANG['action_succeed'], 0, $link); }
2,languages/zh_cn/admin/role.php,添加语言项代码
$_LANG['role_name_empty'] = '角色名不能为空!';
3,admin/templates/role_info.htm,去掉角色描述必填*提示符,这个随便你,想去掉就去 ,不想就不用管。
<textarea name="role_describe" cols="31" rows="6">{$user.role_describe|escape}</textarea> {$lang.require_field}
修改为
<textarea name="role_describe" cols="31" rows="6">{$user.role_describe|escape}</textarea>
第二个问题解决过程
admin/role.php,修改检查权限语句
admin_priv('admin_manage');
修改为
admin_priv('role_manage');
第三个问题解决过程
角色添加和编辑的记录在问题一中已经修复过,以下只需增加记录管理员删除操作日志语句代码
admin/role.php,增加删除记录管理员操作日志语句
搜索
$id = intval($_GET['id']);
在搜索到的代码下一行加入以下代码
/* 获得角色名 */ $role_name = $db->getOne('SELECT role_name FROM '.$ecs->table('role')." WHERE role_id='$_GET[id]'");
再搜索
$url = 'role.php?act=query&' . str_replace('act=remove', '', $_SERVER['QUERY_STRING']);
在搜索到的代码上一行加入以下代码,是上一行哦。
/* 记录管理员操作 */ admin_log(addslashes($role_name), 'remove', 'role');
languages/zh_cn/admin/log_action.php,添加语言项代码
$_LANG['log_action']['role'] = '角色';
第四个问题解决过程
1,admin/role.php,增加判断语句代码
搜索如下代码,共有2段;
$act_list = @join(",", $_POST['action_code']);
在搜索到的第一段代码上一行加入以下代码
/* 判断角色名是否已经存在 */ if (!empty($_POST['user_name'])) { $is_only = $exc->is_only('role_name', stripslashes($_POST['user_name'])); if (!$is_only) { sys_msg(sprintf($_LANG['role_name_exist'], stripslashes($_POST['user_name'])), 1); } }
再搜索如下代码:
elseif ($_REQUEST['act'] == 'update') {
在下一行,加入以下代码
/* 变量初始化 */ $role_id = !empty($_REQUEST['id']) ? intval($_REQUEST['id']) : 0; $role_name = !empty($_REQUEST['user_name']) ? trim($_REQUEST['user_name']) : '';
再搜索如下代码:
$sql = "UPDATE " .$ecs->table('role'). " SET action_list = '$act_list', role_name = '".$_POST['user_name']."', role_describe = '".$_POST['role_describe']." ' ". "WHERE role_id = '$_POST[id]'"; $db->query($sql);
将搜索到的代码修改为如下代码
/* 判断角色名是否已经存在 */ if (!empty($role_name)) { $is_only = $exc->num('role_name', $role_name, $role_id); if ($is_only == 1) { sys_msg(sprintf($_LANG['role_name_exist'], stripslashes($role_name)), 1); } else { $sql = "UPDATE " .$ecs->table('role'). " SET action_list = '$act_list', role_name = '".$_POST['user_name']."', role_describe = '".$_POST['role_describe']." ' ". "WHERE role_id = '$_POST[id]'"; $db->query($sql); } }
2,languages/zh_cn/admin/role.php,添加语言项代码
$_LANG['role_name_exist'] = '该角色名已经存在!';
打包提供我们修改好的文件给大家
[fo_hide]ECShop2.7.3后台角色管理错误修改好的文件.rar 密码: c2t3[/fo_hide]
阅读剩余
版权声明:
作者:z1988
链接:https://www.z1988.com/305.html
文章版权归作者所有,未经允许请勿转载。
作者:z1988
链接:https://www.z1988.com/305.html
文章版权归作者所有,未经允许请勿转载。
THE END