ECShop2.7.3后台角色管理的一些BUG修复

网上只有提供第一个问题的修复资料,网上的经过我们实测修改,还是不完善存在输入角色名提交后依然提示角色名不能为空。以下是我们独家提供最完善角色管理多个问题修复解决。

ECSHOP后台“角色管理”存在大量的bug,如下:

一、角色名为空也能“添加”、“修改”点击保存到数据库,修复增加判断语句避免此问题。
未修复前的问题实测截图如下:
ECShop2.7.3后台角色管理的一些BUG修复

ECShop2.7.3后台角色管理的一些BUG修复

ECShop2.7.3后台角色管理的一些BUG修复

ECShop2.7.3后台角色管理的一些BUG修复

问题一修复解决方法如下:
A、编辑/admin/role.php,增加判断语句代码
搜索原代码如下
/*------------------------------------------------------ */
//-- 添加角色的处理
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'insert')
{
    admin_priv('admin_manage');
    $act_list = @join(",", $_POST['action_code']);
    $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);
    /* 转入权限分配列表 */
    $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'] == '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);
 }
搜索原代码如下
/*------------------------------------------------------ */
//-- 更新角色信息
/*------------------------------------------------------ */
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);
    $user_sql = "UPDATE " .$ecs->table('admin_user'). " SET action_list = '$act_list' ".
           "WHERE role_id = '$_POST[id]'";
    $db->query($user_sql);
    /* 提示信息 */
    $link[] = array('text' => $_LANG['back_admin_list'], 'href'=>'role.php?act=list');
    sys_msg($_LANG['edit'] . " " . $_POST['user_name'] . " " . $_LANG['action_succeed'], 0, $link);
}
把原代码修改如下
/*------------------------------------------------------ */
//-- 更新角色信息
/*------------------------------------------------------ */
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);
}

B、编辑/languages/zh_cn/admin/role.php,添加语言项代码
$_LANG['role_name_empty'] = '角色名不能为空!';

C、编辑/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>

二、管理员分派角色管理权限,无法正常显示使用。修复检查权限的语句解决此问题。
A、编辑/admin/role.php,修改检查权限语句
搜索,一共有三段:
admin_priv('admin_manage');
修改为:
admin_priv('role_manage');

三、角色“添加”、“删除”、“编辑”操作无记录管理员操作日志问题,增加记录管理员操作日志语句解决此问题。
角色添加和编辑的记录在问题一中已经修复过,以下只需增加记录管理员删除操作日志语句代码
A、编辑/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');

B、编辑/languages/zh_cn/admin/log_action.php,添加语言项代码
$_LANG['log_action']['role'] = '角色';

四、角色名相同也能“添加”、“修改”点击保存到数据库,修复增加判断语句避免此问题。
A、编辑/languages/zh_cn/admin/role.php,添加语言项代码
$_LANG['role_name_exist'] = '该角色名已经存在!';

B、编辑/admin/role.php,增加判断语句代码
搜索如下代码,共有两段
$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]'";
将搜索到的代码修改为如下代码
    /* 判断角色名是否已经存在 */
    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);
    }
    }
打包提供我们修改好的文件给大家,下载地址:http://pan.baidu.com/s/1cMrHJ

本文原创地址:https://www.ecshop.cx/article-107.html
版权所有 © 转载时必须以链接形式注明出处!

觉得本文对您有用,想收藏下来!方法很简单:请点击-〉
我们一直坚持白天工作、晚上熬夜更新资源,付出了巨大的精力和时间,其中的辛酸难以言述。

文章评论

暂时还没有任何用户评论

发表 取消
实时购买动态 ×

匿名网友 在 2019-01-05 购买了 ECSHOP最新PayPal支付方式插件 带多货币汇率自动换算订单付款金额