ecshop做的外贸网站如何限制国内用户访问
ecshop系统的强大使得有很多外贸用户也使用他了,不过现在很多外贸用户希望可以限制国内ip访问。魔客吧整理了一下修改教程如下:
1,修改ecshop/includes/init.php文件中增加对浏览器语言和ip的判断
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');
}
}
如果是管理员想在国内不受限制的访问,可以访问一次
http://你的域名/?no_ip_imit=1
24小时内就不会被屏蔽了
完成以上步骤之后记得清缓存,之后再试试是不是可以生效了