zoukankan      html  css  js  c++  java
  • 商城前后台限制ip地址访问

    可禁止设定的IP或IP段访问前台,允许设定的IP或IP段登陆后台,增强网站安全性。IP段用*表示,多个地址用半角逗号分隔,优先级自左向右。程序版本为ECSHOP2.7.3,低版本的用户请手动升级。

    实现步骤如下:

    一、后台执行sql语句,添加所需要的字段,以及默认的几个ip,可以自行修改。如下图:

    INSERT INTO ecs_shop_config (id, parent_id, code, type, store_range, store_dir, value, sort_order) VALUES
    (10, 0, 'ip_limit', 'group', '', '', '', 1),
    (1001, 10, 'front_block', 'select', '1,0', '', '0', 1),
    (1002, 10, 'front_block_ip', 'text', '', '', '58.60.68.134,61.135.169.*,125.39.127.*', 1),
    (1003, 10, 'back_permit', 'select', '1,0', '', '0', 1),
    (1004, 10, 'back_permit_ip', 'text', '', '', '174.36.160.*,174.36.161.155', 1);
    

    二、在网站/includes/lib_common.php文件尾加入

    /**
     * 检查客户端IP是否在名单中
     * @param   string  $ip_list            IP配置字符串
     * @param   string  $real_ip            客户端IP
     * @return  boolean $flag               返回布尔值
     */
    function checkIP($ip_list, $real_ip, $flag)
    {
    	$list = explode(',', $ip_list);
    	foreach($list as $ipStr)
    	{
    		//从右向左检查IP字符串,如果不含星号,则不是IP段。
    		if(strpos($ipStr, '*') == false) 
    		{
    			if($ipStr == real_ip())
    			{    
    				$flag = true;
    				return $flag;
    			}
    		}
    		else
    		{
    			//如果星号之前的IP段字符串是客户端IP的子串
    			$ipStr = substr($ipStr, 0, strpos($ipStr, '*')-1);
    			if(strpos($real_ip, $ipStr) !== false)
    			{
    				$flag = true;
    				return $flag;
    			}
    		}
    	}
    	return $flag; //不在名单中
    }
    

    三、在网站/includes/init.php文件尾加入

      

    /* 前台IP限制 */
    if($_CFG['front_block'] == '1')
    {
    	$flag = false;
    	$flag = checkIP($_CFG['back_permit_ip'], real_ip(), $flag);
    	
    	if($flag)
    	{
    	  echo $_LANG['access_deny'];
    	  exit;
    	}
    }
    

    四、在网站/admin/includes/init.php文件尾加入

    /* 后台IP限制 */
    if($_CFG['back_permit'] == '1')
    {
    	$flag = false;
    	$flag = checkIP($_CFG['back_permit_ip'], real_ip(), $flag);
    	
    	if(!$flag)
    	{
    	  echo $_LANG['access_deny'];
    	  exit;
    	}
    }
    

    五、在网站/languages/zh_cn/admin/shop_config.php中加入

    /* 访问限制 */
    $_LANG['cfg_name']['ip_limit']   = '访问限制';
    $_LANG['cfg_name']['front_block']    = '是否开启前台IP限制';
    $_LANG['cfg_range']['front_block'][0] = '关闭';
    $_LANG['cfg_range']['front_block'][1] = '开启';
    $_LANG['cfg_name']['front_block_ip']    = '前台IP黑名单';
    $_LANG['cfg_desc']['front_block_ip']      = 'IP段用*表示,多个地址用半角逗号分隔,优先级自左向右。';
    $_LANG['cfg_name']['back_permit']    = '是否开启后台IP限制';
    $_LANG['cfg_range']['back_permit'][0] = '关闭';
    $_LANG['cfg_range']['back_permit'][1] = '开启';
    $_LANG['cfg_name']['back_permit_ip']    = '后台IP白名单';
    $_LANG['cfg_desc']['back_permit_ip']      = 'IP段用*表示,多个地址用半角逗号分隔,优先级自左向右。';
    

    六、在商城/languages/zh_cn/common.php中加入

    /* 访问限制 */
    $_LANG['access_deny'] = '对不起,您的IP已被列入黑名单,请联系管理员。';
    

    七、/languages/zh_cn/admin/common.php中加入

    /* 访问限制 */
    $_LANG['access_deny'] = '对不起,您的IP不在白名单中,请联系管理员。';
    

    大功告成!

    注意:语言包的文字可以根据个人意愿进行调整,这里展示的只是大概意思。本人处以学习状态,主要用学习,本代码带来的任何问题,跟本人没有任何关系。(我只是在这里记录自己所做得笔记)。

     

     

      

      

  • 相关阅读:
    Hadoop的三大组件 内容
    常用的linux命令
    shell学习心得
    liunx学习心得。
    随机数
    HADOOP框架
    Shell学习心得
    linux学习心得
    jquery解决随机点餐系统重复问题
    在码云上git push时报错,出现error: failed to push some refs to 'https://gitee.com/lipengyangzuishuai/gitstudy.git'的解决办法
  • 原文地址:https://www.cnblogs.com/meiwei101/p/4014995.html
Copyright © 2011-2022 走看看