亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP判斷IP并跳轉到相應城市分站的方法

2024-05-04 23:33:22
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了PHP判斷IP并轉跳到相應城市分站的方法,實例分析了php解析URL及跳轉的技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了PHP判斷IP并轉跳到相應城市分站的方法。分享給大家供大家參考。具體實現方法如下:

 

 
  1. <?php  
  2. class QQWry{  
  3. var $StartIP=0;  
  4. var $EndIP=0;  
  5. var $Country='';  
  6. var $Local='';  
  7. var $CountryFlag=0; 
  8. // 標識 Country位置  
  9. // 0x01,隨后3字節為Country偏移,沒有Local  
  10. // 0x02,隨后3字節為Country偏移,接著是Local  
  11. // 其他,Country,Local,Local有類似的壓縮??赡芏嘀匾?。  
  12. var $fp;  
  13. var $FirstStartIp=0;  
  14. var $LastStartIp=0;  
  15. var $EndIpOff=0 ;  
  16. function getStartIp($RecNo){  
  17. $offset=$this->FirstStartIp+$RecNo * 7 ;  
  18. @fseek($this->fp,$offset,SEEK_SET) ;  
  19. $buf=fread($this->fp ,7) ;  
  20. $this->EndIpOff=ord($buf[4])+(ord($buf[5])*256)+(ord($buf[6])*256*256); 
  21. $this->StartIp=ord($buf[0])+(ord($buf[1])*256)+(ord($buf[2])*256*256)+(ord($buf[3])*256*256*256); 
  22. return $this->StartIp; 
  23. function getEndIp(){  
  24. @fseek ( $this->fp , $this->EndIpOff , SEEK_SET ) ;  
  25. $buf=fread ( $this->fp , 5 ) ;  
  26. $this->EndIp=ord($buf[0]) + (ord($buf[1])*256) + (ord($buf[2])*256*256) + (ord($buf[3])*256*256*256); 
  27. $this->CountryFlag=ord ( $buf[4] ) ;  
  28. return $this->EndIp ;  
  29. }  
  30. function getCountry(){  
  31. switch ( $this->CountryFlag ) {  
  32. case 1:  
  33. case 2:  
  34. $this->Country=$this->getFlagStr ( $this->EndIpOff+4) ;  
  35. //echo sprintf('EndIpOffset=(%x)',$this->EndIpOff );  
  36. $this->Local=( 1 == $this->CountryFlag )? '' : $this->getFlagStr ( $this->EndIpOff+8); 
  37. break ;  
  38. default :  
  39. $this->Country=$this->getFlagStr ($this->EndIpOff+4);  
  40. $this->Local=$this->getFlagStr ( ftell ( $this->fp ));  
  41. }  
  42. }  
  43. function getFlagStr ($offset){  
  44. $flag=0 ;  
  45. while(1){  
  46. @fseek($this->fp ,$offset,SEEK_SET) ;  
  47. $flag=ord(fgetc($this->fp ) ) ;  
  48. if ( $flag == 1 || $flag == 2 ) {  
  49. $buf=fread ($this->fp , 3 ) ;  
  50. if ($flag==2){  
  51. $this->CountryFlag=2;  
  52. $this->EndIpOff=$offset - 4 ;  
  53. }  
  54. $offset=ord($buf[0]) + (ord($buf[1])*256) + (ord($buf[2])* 256*256);  
  55. }  
  56. else{  
  57. break ;  
  58. }  
  59. }  
  60. if($offset<12)  
  61. return '';  
  62. @fseek($this->fp , $offset , SEEK_SET ) ;  
  63.  
  64. return $this->getStr();  
  65. }  
  66. function getStr ( )  
  67. {  
  68. $str='' ;  
  69. while ( 1 ) {  
  70. $c=fgetc ( $this->fp ) ;  
  71. //echo "$cn" ;  
  72. if(ord($c[0])== 0 )  
  73. break ;  
  74. $str.= $c ;  
  75. }  
  76. //echo "$str n";  
  77. return $str ;  
  78. }  
  79. function qqwry ($dotip='') {  
  80. if( !is_string($dotip) || $dotip==''){return;}  
  81. if(preg_match("/^127/",$dotip)){$this->Country="本地網絡";return ;}  
  82. elseif(preg_match("/^192/",$dotip)) {$this->Country="局域網";return ;}  
  83. $nRet;  
  84. $ip=$this->IpToInt ( $dotip );  
  85. $this->fp= fopen(__QQWRY__, "rb");  
  86. if ($this->fp == NULL) {  
  87. $szLocal"OpenFileError";  
  88. return 1;  
  89. @fseek ( $this->fp , 0 , SEEK_SET ); 
  90. $buf=fread ( $this->fp , 8 ); 
  91. $this->FirstStartIp=ord($buf[0]) + (ord($buf[1])*256) + (ord($buf[2])*256*256) + (ord($buf[3])*256*256*256); 
  92. $this->LastStartIp=ord($buf[4]) + (ord($buf[5])*256) + (ord($buf[6])*256*256) + (ord($buf[7])*256*256*256); 
  93. $RecordCountfloor(($this->LastStartIp - $this->FirstStartIp) / 7); 
  94. if ($RecordCount <= 1){  
  95. $this->Country="FileDataError";  
  96. fclose($this->fp) ;  
  97. return 2 ;  
  98. }  
  99. $RangB= 0;  
  100. $RangE$RecordCount;  
  101. // Match ...  
  102. while ($RangB < $RangE-1)  
  103. {  
  104. $RecNofloor(($RangB + $RangE) / 2); 
  105. $this->getStartIp ( $RecNo ) ;  
  106. if ( $ip == $this->StartIp )  
  107. {  
  108. $RangB=$RecNo ;  
  109. break ;  
  110. }  
  111. if ($ip>$this->StartIp)  
  112. $RangB$RecNo;  
  113. else 
  114. $RangE$RecNo;  
  115. }  
  116. $this->getStartIp ( $RangB ) ;  
  117. $this->getEndIp ( ) ;  
  118. if ( ( $this->StartIp <= $ip ) && ( $this->EndIp >= $ip ) ){  
  119. $nRet=0 ;  
  120. $this->getCountry ( ) ;  
  121. //這樣不太好..............所以..........  
  122. $this->Local=str_replace("area error""",$this->Local);  
  123. }  
  124. else{  
  125. $nRet=3 ;  
  126. $this->Country='未知' ;  
  127. $this->Local='' ;  
  128. }  
  129. fclose ( $this->fp );  
  130. $this->Country=preg_replace("/(CZ88.NET)|(純真網絡)/","局域網/未知",$this->Country); 
  131. $this->Local=preg_replace("/(CZ88.NET)|(純真網絡)/","局域網/未知",$this->Local);  
  132. //////////////看看 $nRet在上面的值是什么0和3,于是將下面的行注釋掉  
  133. return $nRet ;  
  134. //return "$this->Country $this->Local";#如此直接返回位置和國家便可以了  
  135. }  
  136. function IpToInt($Ip) {  
  137. $array=explode('.',$Ip);  
  138. $Int=($array[0] * 256*256*256) + ($array[1]*256*256) + ($array[2]*256) + $array[3]; 
  139. return $Int;  
  140. }  
  141. }  
  142. ?> 

實例演示如下:

 

 
  1. $QQWry=new QQWry; 
  2. $QQWry->QQWry("60.31.95.255"); 
  3. $country = $QQWry->Country; 
  4. echo $QQWry->Country.",".$QQWry->Local; 

希望本文所述對大家的php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频男人的天堂| 久热爱精品视频线路一| 久久久999精品视频| 91av在线影院| 亚洲国产成人精品久久久国产成人一区| 国产午夜精品全部视频在线播放| 国产亚洲精品va在线观看| 日韩一区二区av| 2023亚洲男人天堂| 97久久超碰福利国产精品…| 成人中心免费视频| 亚洲精品国精品久久99热一| 亚洲自拍高清视频网站| 亚洲va电影大全| 国产精品美女在线观看| 成人免费观看49www在线观看| 国产一区二中文字幕在线看| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲www视频| 国产福利视频一区| 国产精品精品久久久久久| 亚洲成人1234| 性欧美暴力猛交69hd| 欧美亚洲伦理www| 欧美大奶子在线| 欧美国产第一页| 国产欧美在线播放| 亚洲欧洲在线视频| 5566日本婷婷色中文字幕97| 91高清免费在线观看| 狠狠色狠狠色综合日日小说| 自拍偷拍亚洲一区| 久久精品久久久久久| 国模精品系列视频| 亚洲男女性事视频| 97国产精品视频人人做人人爱| 最近的2019中文字幕免费一页| 欧美资源在线观看| 亚洲电影免费观看高清完整版在线观看| 国产视频精品久久久| 久久这里只有精品视频首页| 在线播放日韩av| 久久视频在线观看免费| 亚洲第一av在线| 91在线高清免费观看| 亚洲一区二区三区xxx视频| 久久男人的天堂| 久久久视频精品| 91九色国产社区在线观看| 欧美极品欧美精品欧美视频| 日韩av黄色在线观看| 97高清免费视频| 九九久久综合网站| 欧美一级片久久久久久久| 91国产视频在线播放| 欧美日韩精品在线观看| 日韩电影免费在线观看| 国产精品影院在线观看| 日本中文字幕成人| 欧美亚洲在线视频| 播播国产欧美激情| 狠狠久久亚洲欧美专区| 欧美激情亚洲一区| 九九热在线精品视频| 国产www精品| 国a精品视频大全| 91免费看片在线| 一区二区三区国产在线观看| 亚洲欧美一区二区精品久久久| 欧美一级视频免费在线观看| 日韩少妇与小伙激情| 国产精品免费在线免费| 97国产真实伦对白精彩视频8| 亚洲第一页中文字幕| 海角国产乱辈乱精品视频| 欧美亚洲伦理www| 日韩在线观看免费av| 亚洲精品久久久久久久久久久| 久久精品色欧美aⅴ一区二区| 国产精品久久婷婷六月丁香| 欧美中文字幕在线| 日本一欧美一欧美一亚洲视频| 最近2019中文字幕在线高清| 91精品久久久久久久久久久久久久| 成人亚洲激情网| 国产精品久久久久久久午夜| 这里只有精品视频在线| 日韩a**中文字幕| 这里只有精品在线观看| 国产一区二区三区高清在线观看| 精品国产欧美一区二区五十路| 91精品久久久久久久久久久久久| 成人精品久久久| 日韩精品极品视频免费观看| 粗暴蹂躏中文一区二区三区| 久久精品国产久精国产思思| 日韩在线视频导航| y97精品国产97久久久久久| 亚洲欧美第一页| 亚洲欧美中文在线视频| 成人久久久久久| 国产99视频在线观看| 美女福利视频一区| 懂色aⅴ精品一区二区三区蜜月| 欧美日韩精品中文字幕| 日韩精品在线视频观看| 欧美精品成人91久久久久久久| 欧美激情一区二区三区高清视频| 精品亚洲一区二区三区在线观看| 美女撒尿一区二区三区| 亚洲综合色av| 欧美在线视频免费| 欧美激情在线狂野欧美精品| 国产成人精品视频| 国产精品久久久一区| 中文字幕精品一区久久久久| 国产精品视频专区| 日韩人在线观看| 亚洲综合成人婷婷小说| 国产在线不卡精品| 国产精品嫩草影院一区二区| 亚洲欧美在线x视频| 91中文在线视频| 91精品在线观看视频| www亚洲精品| 日韩亚洲精品电影| 亚洲九九九在线观看| 亚洲精品456在线播放狼人| 国产亚洲激情在线| 久久亚洲国产精品成人av秋霞| 2018国产精品视频| 亚洲色无码播放| 亚洲一区二区中文字幕| 亚洲美女动态图120秒| 欧美成人合集magnet| 亚洲黄色免费三级| 中文字幕9999| 国产成人一区二| 日韩久久免费电影| 亚洲视频999| 亚洲一区久久久| 亚洲午夜av电影| 亚洲情综合五月天| 成人黄色片网站| 青青久久av北条麻妃海外网| 亚洲午夜精品久久久久久性色| 97在线观看免费| 亚洲午夜精品久久久久久性色| 亚洲欧美精品一区| 日韩中文字幕在线免费观看| 国产福利精品av综合导导航| 欧美日韩国产成人在线| 在线观看国产精品淫| 一区二区三区视频免费在线观看| 国产色综合天天综合网| 国产成人小视频在线观看| 欧美日韩成人在线观看| 欧美大肥婆大肥bbbbb| 一本一道久久a久久精品逆3p| 亚洲国产三级网| 在线日韩av观看| 亚洲欧美国产日韩中文字幕| 91精品久久久久久久久久久| 久久久久久成人精品|