ecshop——商城限制管理员登陆权限

由于公司运营管理岗位变动,删除账户会造成操作日志操作人为空的现象,为了保留管理账号完整,又不要他登陆管理,虽然可以更改后台管理的链接,但为了更安全,所以公司要求实现管理员状态设置,可以自由变更管理员的登录状态。一下是删除管理员账号操作日志造成的问题:

下面是添加成功后的展示图:

一、执行数据库语句,添加状态字段:其中ecs_为数据库前缀

ALTER TABLE `ecs_admin_user` ADD `status` SMALLINT( 3 ) UNSIGNED NOT NULL DEFAULT ‘1‘ COMMENT ‘账号状态‘;

二、编辑/admin/privilege.php验证登录信息代码段,添加账号状态验证,并在其后添加AJAX修改账号状态(查找----验证登陆信息----大约在179行位置,此方法上面添加以下代码)

/*------------------------------------------------------ */
//-- 验证登录信息
/*------------------------------------------------------ */
elseif ($_REQUEST[‘act‘] == ‘signin‘)
{
    if (!empty($_SESSION[‘captcha_word‘]) && (intval($_CFG[‘captcha‘]) & CAPTCHA_ADMIN))
    {
        include_once(ROOT_PATH . ‘includes/cls_captcha.php‘);

        /* 检查验证码是否正确 */
        $validator = new captcha();
        if (!empty($_POST[‘captcha‘]) && !$validator->check_word($_POST[‘captcha‘]))
        {
            sys_msg($_LANG[‘captcha_error‘], 1);
        }
    }

    $_POST[‘username‘] = isset($_POST[‘username‘]) ? trim($_POST[‘username‘]) : ‘‘;
    $_POST[‘password‘] = isset($_POST[‘password‘]) ? trim($_POST[‘password‘]) : ‘‘;

    $sql="SELECT `ec_salt` FROM ". $ecs->table(‘admin_user‘) ."WHERE user_name = ‘" . $_POST[‘username‘]."‘";
    $ec_salt =$db->getOne($sql);
    if(!empty($ec_salt))
    {
         /* 检查密码是否正确 */
         $sql = "SELECT user_id, user_name, password, last_login, action_list, last_login,suppliers_id,ec_salt,status".
            " FROM " . $ecs->table(‘admin_user‘) .
            " WHERE user_name = ‘" . $_POST[‘username‘]. "‘ AND password = ‘" . md5(md5($_POST[‘password‘]).$ec_salt) . "‘";
    }
    else
    {
         /* 检查密码是否正确 */
         $sql = "SELECT user_id, user_name, password, last_login, action_list, last_login,suppliers_id,ec_salt,status".
            " FROM " . $ecs->table(‘admin_user‘) .
            " WHERE user_name = ‘" . $_POST[‘username‘]. "‘ AND password = ‘" . md5($_POST[‘password‘]) . "‘";
    }
    $row = $db->getRow($sql);
    if ($row)
    {
        // 检查是否为供货商的管理员 所属供货商是否有效
        if (!empty($row[‘suppliers_id‘]))
        {
            $supplier_is_check = suppliers_list_info(‘ is_check = 1 AND suppliers_id = ‘ . $row[‘suppliers_id‘]);
            if (empty($supplier_is_check))
            {
                sys_msg($_LANG[‘login_disable‘], 1);
            }
        }

		// 检查账号状态
		if ($row[‘status‘] == 0)
		{
			sys_msg($_LANG[‘login_disable‘], 1);
			exit();
		}

        // 登录成功
        set_admin_session($row[‘user_id‘], $row[‘user_name‘], $row[‘action_list‘], $row[‘last_login‘]);
        $_SESSION[‘suppliers_id‘] = $row[‘suppliers_id‘];
		if(empty($row[‘ec_salt‘]))
	    {
			$ec_salt=rand(1,9999);
			$new_possword=md5(md5($_POST[‘password‘]).$ec_salt);
             $db->query("UPDATE " .$ecs->table(‘admin_user‘).
                 " SET ec_salt=‘" . $ec_salt . "‘, password=‘" .$new_possword . "‘".
                 " WHERE user_id=‘$_SESSION[admin_id]‘");
		}

        if($row[‘action_list‘] == ‘all‘ && empty($row[‘last_login‘]))
        {
            $_SESSION[‘shop_guide‘] = true;
        }

        // 更新最后登录时间和IP
        $db->query("UPDATE " .$ecs->table(‘admin_user‘).
                 " SET last_login=‘" . gmtime() . "‘, last_ip=‘" . real_ip() . "‘".
                 " WHERE user_id=‘$_SESSION[admin_id]‘");

        if (isset($_POST[‘remember‘]))
        {
            $time = gmtime() + 3600 * 24 * 365;
            setcookie(‘ECSCP[admin_id]‘,   $row[‘user_id‘],                            $time);
            setcookie(‘ECSCP[admin_pass]‘, md5($row[‘password‘] . $_CFG[‘hash_code‘]), $time);
        }

        // 清除购物车中过期的数据
        clear_cart();

        ecs_header("Location: ./index.php\n");

        exit;
    }
    else
    {
        sys_msg($_LANG[‘login_faild‘], 1);
    }
}

/*------------------------------------------------------ */
//-- AJAX修改账号状态
/*------------------------------------------------------ */
elseif ($_REQUEST[‘act‘] == ‘toggle_status‘)
{

    $user_id      = intval($_POST[‘id‘]);
    $status       = intval($_POST[‘val‘]);

    if ($exc->edit("status = ‘$status‘", $user_id ))
    {
        clear_cache_files();
        make_json_result($status);
    }
}

三、编辑/admin/templates/privilege_list.htm添加账号状态列表(替换原有的table,之前记得备份)

<table cellspacing=‘1‘ cellpadding=‘3‘ id=‘list-table‘>
  <tr>
    <th>{$lang.user_name}</th>
    <th>{$lang.email}</th>
    <th>{$lang.join_time}</th>
    <th>{$lang.last_time}</th>
	<th>{$lang.status}</th>
    <th>{$lang.handler}</th>
  </tr>
  {foreach from=$admin_list item=list}
  <tr>
    <td class="first-cell" >{$list.user_name}</td>
    <td align="left">{$list.email}</td>
    <td align="center">{$list.add_time}</td>
    <td align="center">{$list.last_login|default:N/A}</td>
	<td align="center"><img src="images/{if $list.status}yes{else}no{/if}.gif" onclick="listTable.toggle(this, ‘toggle_status‘, {$list.user_id})" /></td>
    <td align="center">
      <a href="privilege.php?act=allot&id={$list.user_id}&user={$list.user_name}" title="{$lang.allot_priv}"><img src="images/icon_priv.gif" border="0" height="16" width="16"></a>  
      <a href="admin_logs.php?act=list&id={$list.user_id}" title="{$lang.view_log}"><img src="images/icon_view.gif" border="0" height="16" width="16"></a>  
      <a href="privilege.php?act=edit&id={$list.user_id}" title="{$lang.edit}"><img src="images/icon_edit.gif" border="0" height="16" width="16"></a>  
      <a href="javascript:;" onclick="listTable.remove({$list.user_id}, ‘{$lang.drop_confirm}‘)" title="{$lang.remove}"><img src="images/icon_drop.gif" border="0" height="16" width="16"></a></td>
  </tr>
  {/foreach}
</table>

四、/languages/zh_cn/admin/privilege.php文件尾添加

$_LANG[‘status‘] = ‘状态‘;

这样基本就大功告成,基本成功了,当被禁止的时候会提示如下图:

再次申明,以上代码仅供学习参考。操作前记得备份原来的文件,造成任何后果,与本人无关!  

时间: 2024-08-08 05:39:09

ecshop——商城限制管理员登陆权限的相关文章

ecshop商城系统登录出现登录闪退问题

症状:ecshop商城系统提示登录成功,而且状态也是登录,一刷新,自动退出了,真坑爹 解决方案: 1.点着点着经常无故退出,感觉session被清空了.查找原因:ecshop中有用ip地址来验证,而公司是双线接入的,ip会随机生成. 两次访问的ip地址不同导致session_key不一样就出现这种情况 2.修改includes/cls_session.php文件,生成session_key时去掉ip by Bjr 2017-09-15 18:31:58

ECSHOP商城网站建设之自定义调用广告方法(二)

原文地址:http://www.cnblogs.com/zgzy/p/3598991.html 使用ecshop进行商城网站建设时,ecshop默认的很多功能对于我们个性化设计之后不太使用.今天我们主要是来分析如果自定义调用广告位:1.调用单个广告位时我们可以使用:{insert name='ads' id=37 num=3}这里的id则是广告位的ID号,这个id可以通过网站的后台,广告位管理里边去查看:num则是只我们要调用几个广告出来.2.当我们的广告使用很多特效是,比如说我们要个性化幻灯片

ecshop——商城禁止注册敏感词

这个是为了防止一些敏感字眼出现在商城会员中,实现如下: 一.执行sql语句: INSERT INTO `{$prefix}shop_config` (`id`, `parent_id`, `code`, `type`, `store_range`, `store_dir`, `value`, `sort_order`) VALUES (10, 0, 'sensitive', 'group', '', '', '', 1), (1001, 10, 'reg_sensitive', 'textare

windows系统iis运行环境下ecshop商城设置伪静态的方法

IIS ECSHOP 伪静态设置三个条件: 1.支持伪静态环境设置: (VPS.服务器的可自行假设,如果是虚拟主机的话,请咨询空间服务商!)2.新建 httpd.ini 文件放在网站根目录下:3.在后台设置开户 伪静态 功能: 确认满足以上三个条件以后按下面步骤操作:1.首先请进入以下网址 http://www.helicontech.com/download/,下载免费版的ISAPI_Rewrite组件:ISAPI_Rewrite Lite ( freeware ).如果您仅仅是测试用途使用这

ecshop——商城禁止修改管理员邮箱

1.点击修改密码的时候,邮箱为只读状态,增加管理员的时候为可编辑状态. 添加管理员: 一./admin/privilege.php中将以下代码 //更新管理员信息 if($pwd_modified) { $sql = "UPDATE " .$ecs->table('admin_user'). " SET ". "user_name = '$admin_name', ". "email = '$admin_email', "

Ecshop:后台添加新功能栏目以及管理权限设置

一.添加菜单项 打开 /admin/includes/inc_menu.php文件(后台框架左边菜单),在最后添加一行如下: 1$modules['17_other_menu']['sns_list'] = 'sns_list.php?act=list'; ecshop默认一级菜单项有16项,所里这里的例子从17开始.当然这个key可以随便取的,index.php文件中对菜单用 了ksort排序.“17_other_menu” 表示一级菜单,“sns_list”表示二级菜单.等号后面的值表示该菜

ecshop后台新功能及权限的添加

1 1.在后台"推荐管理"里添加"推荐人分成"."会员分成"两个操作功能以及权限 2 3 index.php?act=menu 4 5 incluedes/inc_priv.php:权限对照表.inc_menu.php:管理中心菜单数组 6 7 languages/zh_cn/admin/common.php:管理中心公共语言文件 8 9 1)在common.php管理中心公共语言文件中添加 10 11 $_LANG['affiliate_reg

后台添加新功能栏目以及管理权限设置

一.添加菜单项 打开 /admin/includes/inc_menu.php文件(后台框架左边菜单),在最后添加一行如下: 1$modules['17_other_menu']['sns_list'] = 'sns_list.php?act=list'; ecshop默认一级菜单项有16项,所里这里的例子从17开始.当然这个key可以随便取的,index.php文件中对菜单用了ksort排序.“17_other_menu” 表示一级菜单,“sns_list”表示二级菜单.等号后面的值表示该菜单

ecshop增加pc扫描二维码微信支付功能代码

ecshop开发网站,如果没有手机版,又想通过微信支付,可以加入pc二维码扫描微信支付功能 工具/原料 ecshop商城系统,phpqrcode,WxPayPubHelper 公众号已申请微信支付 方法/步骤 使用PHP QR Code生成二维码,下载,在商品支付页面加入 include 'phpqrcode/phpqrcode.php'; $pay_url ='http://www.xxx.com/weixin/weixin.php?order_id='.$order['order_sn'];