如何實(shí)現(xiàn)網(wǎng)站根據(jù)ip判斷地區(qū)自動跳轉(zhuǎn)到所屬地區(qū)頁面 通過測試_第1頁
如何實(shí)現(xiàn)網(wǎng)站根據(jù)ip判斷地區(qū)自動跳轉(zhuǎn)到所屬地區(qū)頁面 通過測試_第2頁
如何實(shí)現(xiàn)網(wǎng)站根據(jù)ip判斷地區(qū)自動跳轉(zhuǎn)到所屬地區(qū)頁面 通過測試_第3頁
如何實(shí)現(xiàn)網(wǎng)站根據(jù)ip判斷地區(qū)自動跳轉(zhuǎn)到所屬地區(qū)頁面 通過測試_第4頁
如何實(shí)現(xiàn)網(wǎng)站根據(jù)ip判斷地區(qū)自動跳轉(zhuǎn)到所屬地區(qū)頁面 通過測試_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、說明:這個代碼的作用是根據(jù)來訪者的IP判斷出來訪者屬于哪個城市,然后跳轉(zhuǎn)到相應(yīng)城市的頁面可以將下面這段代碼保存為*.PHP,然后訪問這個文件就能實(shí)現(xiàn)跳轉(zhuǎn)一直想利用純真IP庫來做這個根據(jù)IP跳轉(zhuǎn)程序,剛出來的一段代碼,大家一起研究一下 1. <?php2.      header("Content-type: text/html; charset=utf-8");3.4. /返回當(dāng)前IP的城市字符串  5. function convertip($ip)   6.    

2、 /IP數(shù)據(jù)文件路徑  7.     $dat_path = 'data/QQWry.Dat'  8.   9.     /檢查IP地址  10.     if(!preg_match("/(d1,2|1dd|20-4d|250-5).(d1,2|1dd|20-4d|250-5).(d1,2|1dd|20-4d|250-5).(d1,2|1dd|20-4d|250-5)$/", $ip)   11.

3、        return 'IP Address Error'  12.       13.     /打開IP數(shù)據(jù)文件  14.     if(!$fd = fopen($dat_path, 'rb')  15.         return 'IP date file not exists

4、or access denied'  16.       17.   18.     /分解IP進(jìn)行運(yùn)算,得出整形數(shù)  19.     $ip = explode('.', $ip);  20.     $ipNum = $ip0 * 16777216 + $ip1 * 65536 + $ip2 * 256 + $ip3;  21.   22. 

5、0;   /獲取IP數(shù)據(jù)索引開始和結(jié)束位置  23.     $DataBegin = fread($fd, 4);  24.     $DataEnd = fread($fd, 4);  25.     $ipbegin = implode('', unpack('L', $DataBegin);  26.     if($ipbegin < 0) $ipbegin += pow(2,

6、32);  27.     $ipend = implode('', unpack('L', $DataEnd);  28.     if($ipend < 0) $ipend += pow(2, 32);  29.     $ipAllNum = ($ipend - $ipbegin) / 7 + 1;  30.       31.     $BeginNu

7、m = 0;  32.     $EndNum = $ipAllNum;  33.   34.     /使用二分查找法從索引記錄中搜索匹配的IP記錄  35.     while($ip1num>$ipNum | $ip2num<$ipNum)   36.         $Middle= intval($EndNum + $BeginNum) / 2);

8、0; 37.   38.         /偏移指針到索引位置讀取4個字節(jié)  39.         fseek($fd, $ipbegin + 7 * $Middle);  40.         $ipData1 = fread($fd, 4);  41.        &#

9、160;if(strlen($ipData1) < 4)   42.             fclose($fd);  43.             return 'System Error'  44.           45.      &

10、#160;  /提取出來的數(shù)據(jù)轉(zhuǎn)換成長整形,如果數(shù)據(jù)是負(fù)數(shù)則加上2的32次冪  46.         $ip1num = implode('', unpack('L', $ipData1);  47.         if($ip1num < 0) $ip1num += pow(2, 32);  48.       &

11、#160;   49.         /提取的長整型數(shù)大于我們IP地址則修改結(jié)束位置進(jìn)行下一次循環(huán)  50.         if($ip1num > $ipNum)   51.             $EndNum = $Middle;  52.       

12、0;     continue;  53.           54.           55.         /取完上一個索引后取下一個索引  56.         $DataSeek = fread($fd, 3);  57. &

13、#160;       if(strlen($DataSeek) < 3)   58.             fclose($fd);  59.             return 'System Error'  60.         

14、60; 61.         $DataSeek = implode('', unpack('L', $DataSeek.chr(0);  62.         fseek($fd, $DataSeek);  63.         $ipData2 = fread($fd, 4);  64.   &#

15、160;     if(strlen($ipData2) < 4)   65.             fclose($fd);  66.             return 'System Error'  67.           

16、68.         $ip2num = implode('', unpack('L', $ipData2);  69.         if($ip2num < 0) $ip2num += pow(2, 32);  70.   71.         /沒找到提示未知  72.   &#

17、160;     if($ip2num < $ipNum)   73.             if($Middle = $BeginNum)   74.                 fclose($fd);  75.           

18、      return 'Unknown'  76.               77.             $BeginNum = $Middle;  78.           79.       80.

19、   81.     $ipFlag = fread($fd, 1);  82.     if($ipFlag = chr(1)   83.         $ipSeek = fread($fd, 3);  84.         if(strlen($ipSeek) < 3)   85.     

20、       fclose($fd);  86.             return 'System Error'  87.           88.         $ipSeek = implode('', unpack('L', $

21、ipSeek.chr(0);  89.         fseek($fd, $ipSeek);  90.         $ipFlag = fread($fd, 1);  91.       92.   93.     if($ipFlag = chr(2)   94.      &#

22、160;  $AddrSeek = fread($fd, 3);  95.         if(strlen($AddrSeek) < 3)   96.             fclose($fd);  97.             return 'System Error

23、9;  98.           99.         $ipFlag = fread($fd, 1);  100.         if($ipFlag = chr(2)   101.             $AddrSeek2 = fread($fd

24、, 3);  102.             if(strlen($AddrSeek2) < 3)   103.                 fclose($fd);  104.                 return 'System

25、 Error'  105.               106.             $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0);  107.             fseek($fd,

26、$AddrSeek2);  108.          else   109.             fseek($fd, -1, SEEK_CUR);  110.           111.   112.         while(

27、$char = fread($fd, 1) != chr(0)  113.             $ipAddr2 .= $char;  114.   115.         $AddrSeek = implode('', unpack('L', $AddrSeek.chr(0);  116.      

28、0;  fseek($fd, $AddrSeek);  117.   118.         while($char = fread($fd, 1) != chr(0)  119.             $ipAddr1 .= $char;  120.     else   121.    &#

29、160;    fseek($fd, -1, SEEK_CUR);  122.         while($char = fread($fd, 1) != chr(0)  123.             $ipAddr1 .= $char;  124.   125.         $

30、ipFlag = fread($fd, 1);  126.         if($ipFlag = chr(2)   127.             $AddrSeek2 = fread($fd, 3);  128.             if(strlen($AddrSeek2) < 3)  &

31、#160;129.                 fclose($fd);  130.                 return 'System Error'  131.               132.    &

32、#160;        $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0);  133.             fseek($fd, $AddrSeek2);  134.          else   135.      &

33、#160;      fseek($fd, -1, SEEK_CUR);  136.           137.         while($char = fread($fd, 1) != chr(0)  138.             $ipAddr2 .= $char; 

34、0;139.           140.       141.     fclose($fd);  142.   143.     /最后做相應(yīng)的替換操作后返回結(jié)果  144.     if(preg_match('/http/i', $ipAddr2)   145.       

35、  $ipAddr2 = ''  146.       147.     $ipaddr = "$ipAddr1 $ipAddr2"  148.     $ipaddr = preg_replace('/CZ88.Net/is', '', $ipaddr);  149.     $ipaddr = preg_replace('/s*/is&#

36、39;, '', $ipaddr);  150.     $ipaddr = preg_replace('/s*$/is', '', $ipaddr);  151.     if(preg_match('/http/i', $ipaddr) | $ipaddr = '')   152.         $ipaddr = 'Unknown'  153.       154.   155.     return $ipaddr;  156.   157.   158.   159. /查找字符串  160. function findstr($str, $substr)  161.   162.       

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論