整合營銷服務商

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

          免費咨詢熱線:

          波哥教你仿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无码一区二区三区| 精品国产免费一区二区三区香蕉 | 免费精品一区二区三区第35| 制服中文字幕一区二区| 国产AV一区二区三区无码野战 | 在线视频一区二区三区四区| 国产精品久久久久一区二区三区 | 夜夜添无码一区二区三区| 波多野结衣的AV一区二区三区| 国产在线aaa片一区二区99 | 日韩一区二区三区射精| 国产一区二区在线观看麻豆| 国产综合一区二区在线观看| 国产高清在线精品一区| 色精品一区二区三区| 久久久91精品国产一区二区三区| 男插女高潮一区二区| AV无码精品一区二区三区宅噜噜 | 精品国产精品久久一区免费式| 久久精品中文字幕一区| 中文字幕一区在线观看视频| 成人区人妻精品一区二区不卡网站 | 精产国品一区二区三产区| 国产精品福利区一区二区三区四区| 久久久久人妻一区二区三区| 秋霞鲁丝片一区二区三区| 精品一区二区三区东京热| 无码日韩人妻AV一区二区三区| 在线播放国产一区二区三区 | 看电影来5566一区.二区| 精品免费国产一区二区三区| 国产一区二区中文字幕| 精品无码一区二区三区水蜜桃| 国产亚洲情侣一区二区无码AV| 无码精品人妻一区二区三区免费看 | 福利一区二区视频| 亚拍精品一区二区三区| 中文字幕VA一区二区三区| 卡通动漫中文字幕第一区| 精品无码一区二区三区在线| 色老板在线视频一区二区|