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

ecshop系统的强大使得有很多外贸用户也使用他了,不过现在很多外贸用户希望可以限制国内ip访问。ecshop插件网,整理了一下浏览器语言和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

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

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

文章评论

暂无评论,来发表一个吧

发表 取消
充值有惊喜 ECSHOP插件网微信客服edait_cn