ecshop不同城市显示不同商品之后台前端根据ip获取城市并屏蔽商品

1、在lib_base.php添加方法get_ip_area()

//根据ip获取地区 2015-9-9
function get_ip_area()
{
    $ip = real_ip();
    $ch = curl_init();
    $url = 'http://apis.baidu.com/apistore/iplookupservice/iplookup?ip='.$ip;
    //$url = 'http://apis.baidu.com/apistore/iplookupservice/iplookup?ip=58.252.73.135';
    $header = array(
        'apikey: 每个百度账号都有相应的apikey',
    );
    curl_setopt($ch, CURLOPT_HTTPHEADER  , $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // 执行HTTP请求
    curl_setopt($ch , CURLOPT_URL , $url);
    $res = curl_exec($ch);
    $result = json_decode($res,true);
    $result = $result['retData'];
    return $result;


function get_local_ip_area()
{
    $ip = real_ip();
    include_once("ipip/IP.class.php");
    $area = IP::find($ip);
    //$area = IP::find('58.252.73.135');
    $result['province'] = "";
    $result['city'] = "";
    if(!empty($area) && count($area)>3)
    {
        $result['province'] = $area[1];
        $result['city'] = $area[2];
    }
    return $result;


2.在初始化页面init.php获取到城市

 if(empty($_SESSION['ip_city']))
    {
        $areas = get_ip_area();
        //var_dump($areas);
        $_SESSION['ip_province']  = $areas['province'];//后续需要扩展直接屏蔽省份
        $_SESSION['ip_city']  = $areas['city'];
    }

shield_type:这里区分是商品还是广告

shield_id:表示商品id或广告id

$ip_city = $_SESSION['ip_city'] ;


3、在lib_goods.php写相应的方法

/*
*根据获取到的城市屏蔽商品 2015-9-10 don
*$goods_id:商品id
*$ip_city :根据ip获取到的城市
*/
function shield_goods($goods_id, $ip_city="")
{
    $flag = false;
    $shield_citys = $GLOBALS['db']->getOne("SELECT citys FROM ".$GLOBALS['ecs']->table('')." WHERE shield_type=0 AND shield_id=".$goods_id);
    if(!empty($shield_citys))
    {
        //echo $ip_city;
        $shield_citys_arr = unserialize($shield_citys);
        //var_dump($shield_citys_arr);
        if(in_array($ip_city, $shield_citys_arr))
        {
            $flag = true;
        }
    }
    return $flag;
}


/*
*根据获取到的城市屏蔽商品 2015-9-10 don
*$ip_city :根据ip获取到的城市
*/
function shield_all_goods($ip_city="", $children='', $keywords='')
{
    $goods_str = "";
    $where = " a.shield_type=0 ";
    if(!empty($children))
    {
        $where .= " AND ".$children;
    }
    if(!empty($keywords))
    {
        $where .= " AND g.goods_name like '%".$keywords."%' OR g.keywords like '%".$keywords."%' ";
    }
    $shield_citys = $GLOBALS['db']->getAll("SELECT     FROM ".$GLOBALS['ecs']->table('')." AS a LEFT JOIN ".$GLOBALS['ecs']->table('goods')." AS g ON a.shield_id = g.goods_id WHERE ".$where);
    
    foreach($shield_citys as $key=>$val)
    {
        if(!empty($val['citys']))
        {
            $shield_citys_arr = unserialize($val['citys']);
            //var_dump($shield_citys_arr);
            if(in_array($ip_city, $shield_citys_arr))
            {
                $goods_str .= $val['shield_id'].",";
            }
        }
    }
    if(!empty($goods_str))
    {
        $goods_str = rtrim($goods_str,",");
    }
    //echo $goods_str;
    return $goods_str;
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值