




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能信用卡個人借款服務(wù)合同
- 二零二五年度綠色環(huán)保工程標(biāo)前協(xié)議書
- 二零二五年度別墅裝修工程定金合同
- 酒店員工勞動合同與員工薪酬福利及職業(yè)發(fā)展支持合同2025
- 二零二五年度室內(nèi)門行業(yè)品牌保護(hù)與維權(quán)合同
- 食品酸度調(diào)節(jié)劑企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報(bào)告
- 標(biāo)準(zhǔn)版離婚協(xié)議書模板-跨國離婚協(xié)議范文
- 2025年壁掛式家用燃?xì)忮仩t項(xiàng)目可行性研究報(bào)告
- 2025年經(jīng)濟(jì)型A/D八位單片機(jī)項(xiàng)目可行性研究報(bào)告
- 2025年雙向磁力攪拌器項(xiàng)目可行性研究報(bào)告
- 分析化學(xué)試題(附答案)
- 小兒腸套疊護(hù)理查房
- DL-T5440-2020重覆冰架空輸電線路設(shè)計(jì)技術(shù)規(guī)程
- UG NX12.0基礎(chǔ)與應(yīng)用教程 課件 單元2 任務(wù)2 二維草圖創(chuàng)建和編輯
- DZ∕T 0273-2015 地質(zhì)資料匯交規(guī)范(正式版)
- 中國傳統(tǒng)文化經(jīng)典解讀-《菜根譚》智慧樹知到期末考試答案章節(jié)答案2024年陜西工商職業(yè)學(xué)院
- 2069-3-3101-002WKB產(chǎn)品判定準(zhǔn)則-外發(fā)
- 2024年江蘇國信儀征 高郵熱電有限責(zé)任公司招聘筆試參考題庫含答案解析
- 小班社會《認(rèn)識家用電器》課件
- JTG C10-2007 公路勘測規(guī)范
- 2024年廣州市高三一模高考英語試卷試題答案詳解(含作文范文)
評論
0/150
提交評論