iwebshop商城系统插件ip2region-准确率99.9%的ip地址定位库,0.0x毫秒级查询

原商城系统IP查询流程:

1.请求/block/iplookupAjax 获取省份名称

2./block/iplookupAjax内调用 IClient::getLocal()请求http://ipservice.suning.com/ipQuery.do得到省市区名称(这个接口不准确,慢经常1秒以上),返回

3.请求/block/searchProvince查找与iWebShop系统匹配的地区

本插件 可提高ip识别精确度,减少2次网络请求(省去1,2步骤)提高产品详情页加载速度。

插件下载

首先复制本目录ip2region,到plugins/插件目录下 


  1. 修改 /public/javascript/products.js的 this.initLocalArea函数


    /**
    	 * @brief 根据接口获取当前所在地的运费
    	 */
    	this.initLocalArea = function()
    	{
    		//根据接口返回的数据查找与iWebShop系统匹配的地区
    		$.getJSON(creatUrl("block/searchProvince"),{'random':Math.random},function(json)
    		{
    			if(json.flag == 'success')
    			{
    				//计算各个配送方式的运费
    				_self.delivery(json.area_id,json.area_name);
    			}
    		});
    
    		//绑定地区选择按钮事件
    		$('[name="areaSelectButton"]').bind("click",function(){
    			var provinceId   = $(this).attr('value');
    			var provinceName = $(this).text();
    			_self.delivery(provinceId,provinceName);
    		});
    	}


  2. 修改 /controllers/block.php的 searchProvince函数

    大卫博客

    /**
    	* @brief 根据IP查询 area_id , area_name
    	*/
    	public function searchProvince()
    	{
    		//大卫 2018年11月21日
    		$classfile = IWeb::$app->getBasePath().'plugins/ip2region/Ip2Region.php';
    		require_once($classfile);
    		$ip2region = new Ip2Region();
    		$info = $ip2region->btreeSearch( IClient::getIp() );
    
    		$areas_info = NULL;
    		if( $info['city_id']!=0 ){
    			$area_id = substr($info['city_id'],0,2).'0000';	//取字符串前2位(省份编码),然后补齐0000
    			$tb_areas = new IModel('areas');
    			$areas_info = $tb_areas->getObj('parent_id = 0 and area_id = "'.$area_id.'"','area_name');
    		}
    		$result = array('flag' => 'fail','area_id' => 0);
    		if($areas_info)
    		{
    			$result = array('flag' => 'success','area_id' => $area_id,'area_name'=>$areas_info['area_name'],'data'=>$info);
    		}
    		echo JSON::encode($result);
    	}

大卫博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论