整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          波哥教你仿58同城網站實現城市自動切換

          波哥教你仿58同城網站實現城市自動切換

          昨天的分享中,波波為大家分享了通過IP定位到用戶的城市,今天我們換一種方法來實現,根據用戶城市不同,讓網站自動切換不同的城市。

          關于這個問題其實實現起來不復雜,不過波波思考了幾天,原因在于上次分享內容用的是淘寶的api,而在淘寶的返回數據中城市只有漢字和citycode,所以使用起來尤其對于初學者極其不方便。所以我們這次使用高德地圖的api。

          高德地圖API根據IP定位接口返回的數據中每個城市都有一個adcode,其實這個adcode是郵政編碼,所以實現的話,我們首先給網站后臺建立一個數據表,我們命名為citycode,表中需要至少兩個字段,一個是郵政編碼,一個是簡稱,比如"鄭州",在數據庫中存儲數據為"zz",當然了大家可以隨意定義,我這里只是為了講解方便。

          第一步,獲取用戶的IP地址,教程請參考《如何通過IP地址定位用戶的位置》。

          第二步,根據ip地址獲取用戶所在城市的郵政編碼。源碼如下:

          /*高德地圖IP定位*/

          function IP2Location($ip,$para){

          //高德的IP定位返回數據較少,如需詳細定位信息可使用淘寶接口。

          $str="output=json&ip=".$ip."&key=".$para;

          $url="http://restapi.amap.com/v3/ip?".$str;

          $content=file_get_contents($url);

          $data=json_decode($content,true);

          return $data;

          }

          需要說明的是函數IP2Location($ip,$para)中$para傳的是你在高德開放平臺申請的webService的key值。不是JSapi的那個接口哦,不然沒有數據不要說波波代碼有問題。

          調用的時候只需要寫一句:$location=IP2Location($ip,$key);就可以了。

          第三步,查詢數據庫實現跳轉。代碼如下:

          $row=$mysql->query("select * from `citycode` where `adcode`='{$location['adcode']}'limit 1");

          if($row){

          $url="http://".$row['簡寫的字段名'].".域名";

          //拼接出來的網址類似http://zz.58.com,這里僅僅是舉例,非特定58.請知悉

          echo "<!--<script language='javascript' type='text/javascript'>";

          echo "window.location.href='$url'";

          echo "</script>-->";

          }

          通過上面的代碼已經實現了根據用戶IP地址自動切換網站城市的目的,但是如果僅僅這樣并不完善,對于一個大型網站來講代碼開發還應該具備糾錯功能。以上分享僅供交流學習。

          多大型信息平臺,如58同城,百姓網等都會有全國地區分站,比如我廣州的,打開58同城會自動進入廣州分站。

          現在很多做網站的站長和網站建設公司都會采用pageadmin這類網站系統來建站,pageadmin是支持站群的,下面演示如何實現58同城的地區跳轉功能。

          1、首先需要一個iP識別接口,這里可以到阿里云去申請,我們也可以用淘寶的免費api接口,阿里云的接口返回信息格式如下。

          {"code":0,"data":{"ip":"210.73.44.249","country":"中國","area":"","region":"廣東","city":"廣州","county":"XX","isp":"科技網","country_id":"CN","area_id":"","region_id":"440000","city_id":"440100","county_id":"xx","isp_id":"1000114"}}
          

          下面我們通過ajax請求的方式來獲取到歸屬信息實現跳轉,代碼如下:

          <script type="text/javascript">
          var clientIp="@StringHelper.GetClientIP()";//調用pageadmin的內置方法獲取ip地址
          var api="http://ip.taobao.com/service/getIpInfo.php";
          $(function () {
           $.ajax({
           url: api,
           type: "GET",
           dataType: "json", //指定服務器返回的數據類型
           data: { ip: clientIp },
           success: function (ipData) {
           ipData=JSON.parse(ipData);
           var city=ipData.data.city;
           cityDomain(city) //調用城市判斷函數
           }
           });
          });
          //城市判斷函數
           function cityDomain(city) {
           var domain="www.58.com"; //換成自己的域名
           switch (city) {
           case "廣州":
           domain="guangzhou.58.com";
           break;
           case "北京":
           domain="beijing.58.com";
           break;
           case "其他地區一一判斷":
           //更多
           break;
           }
           location.href="domain";
          }
          </script>
          
          

          域名跳轉這部分可以在pageadmin的后臺建一個分類表來實現,這樣就可以實現后臺控制,如下圖:

          添加一個自定義字段domain,這樣就可以通過后臺來控制地區和域名的對應,以后如果有變動直接通過后臺修改即可,我這里添加了幾條演示數據,效果如下。

          通過點擊添加和修改就可以實現地區和域名的后臺控制,相比直接在模板中寫死,是不是方便了很多。


          者:Aaron

          轉發鏈接:https://segmentfault.com/a/1190000022781346


          主站蜘蛛池模板: 精品人妻系列无码一区二区三区| 亚洲天堂一区在线| 亚洲国产AV一区二区三区四区| 麻豆一区二区99久久久久| 日韩精品一区二区三区毛片 | 激情啪啪精品一区二区| 538国产精品一区二区在线| 日韩免费无码视频一区二区三区 | 另类国产精品一区二区| 亚洲国产精品一区二区九九 | 国产精品自拍一区| 日韩十八禁一区二区久久| 日本一区二区三区高清| 立川理惠在线播放一区| 亚洲电影唐人社一区二区| 亚洲色无码一区二区三区| 国产精品无码亚洲一区二区三区 | 久久久久人妻精品一区| 国产精品无码不卡一区二区三区 | 日韩精品人妻av一区二区三区| 熟女精品视频一区二区三区| 国产伦精品一区二区三区视频金莲| 国产精品一级香蕉一区| 亚洲宅男精品一区在线观看| 亚洲一区二区三区香蕉| 日本高清不卡一区| 久久免费精品一区二区| 久久久久无码国产精品一区| 亚洲AV无码一区二区三区系列| 中文字幕在线观看一区二区三区 | 国产精品一区在线观看你懂的| 精品国产一区二区三区久久影院| 亚洲综合一区国产精品| 无码av中文一区二区三区桃花岛| 亚洲中文字幕久久久一区| 天天视频一区二区三区 | 无码日韩人妻AV一区免费l| 亚洲一区二区高清| 国模私拍福利一区二区| 一区二区三区内射美女毛片| 日本在线不卡一区|