广州传奇网络

地址:广州市天河区东圃大马路富华楼C座

电话:13808825895

邮箱:gz020wbs@163.com

QQ:1564443073

网址:http://www.020wbs.com/

首页 > 二次开发Ecshop二次开发 > ecshop限制国内用户访问的方法【ecshop做的外贸网站如何限制国内用户访问】

二次开发Ecshop二次开发

二次开发Ecshop二次开发

ecshop限制国内用户访问的方法【ecshop做的外贸网站如何限制国内用户访问】

 ecshop系统的强大使得有很多外贸用户也使用他了,不过现在很多外贸用户希望可以限制国内ip访问。本站整理了一下浏览器语言和ip的判断修改教程如下:

1、打开/includes/init.php文件,搜索如下代码
if (is_spider())
{
/* 如果是蜘蛛的访问,那么默认为访客方式,并且不记录到日志中 */
if (!defined('INIT_NO_USERS'))
{
define('INIT_NO_USERS', true);
/* 整合UC后,如果是蜘蛛访问,初始化UC需要的常量 */
if($_CFG['integrate_code'] == 'ucenter')
{
$user = & init_users();
}
}
$_SESSION = array();
$_SESSION['user_id'] = 0;
$_SESSION['user_name'] = '';
$_SESSION['email'] = '';
$_SESSION['user_rank'] = 0;
$_SESSION['discount'] = 1.00;
}
下面加入以下代码
function ipCIDRCheck ($ip, $cidr)
{
$arr_cidr = explode('/', $cidr);
$net = $arr_cidr[0];
$mask = $arr_cidr[1];
$ip_net = ip2long ($net);
$ip_mask = ~((1 << (32 - $mask)) - 1);
$ip_ip = ip2long ($ip);
$ip_ip_net = $ip_ip & $ip_mask;
return ($ip_ip_net == $ip_net);
}
$cn_ip_str = file_get_contents(ROOT_PATH . 'data/cnip.txt');
$cn_ip_arr = explode("\n",$cn_ip_str);
$ip = real_ip();
$is_cn_ip = false;
foreach ($cn_ip_arr as $subnet)
{
if (ipCIDRCheck ($ip, $subnet))
{
$is_cn_ip = true;
break;
}
}
$browse_lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4);
if (isset($_REQUEST['no_ip_imit']))
{
$no_ip_imit_time = gmtime() + 3600 * 24 * 30;
setcookie("no_ip_imit", trim($_REQUEST['no_ip_imit']), $no_ip_imit_time, $$cookie_path, $cookie_domain);
$_SESSION['no_ip_imit'] = $_REQUEST['no_ip_imit'];
}
if (!(isset($_REQUEST['no_ip_imit']) || isset($_COOKIE['no_ip_imit']) || isset($_SESSION['no_ip_imit'])))
{
if (preg_match("/zh-c/i", $browse_lang) || $is_cn_ip)
{
header("http/1.1 403 Forbidden");
die('403 Forbidden');
}
}
如果是管理员想在国内不受限制的访问,可以访问一次,24小时内就不会被屏蔽了
http://你的域名/?no_ip_imit=1