1、在lib_base.php添加方法get_ip_area()
//根据ip获取地区 2015-9-9function 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;
}