<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. php語言

    php怎樣根據ip地址查地區

    時間:2025-05-06 12:34:19 php語言 我要投稿
    • 相關推薦

    php怎樣根據ip地址查地區

      很多網站里一打開他們的網頁,便顯示“江蘇無錫的客戶您好”等等,請問他們是怎樣根據ip查到精確到市的地址的呢?下面是小編整理的php根據ip地址查地區,希望對大家有用,更多消息請關注應屆畢業生網。

      根據discuz里面的ip查詢改的

      /**

      * ip地址所屬地區計算

      * 修改自 discuz

      * 使用dicuz tinyipdata數據文件

      * 將一些英文提示修改為漢字

      * $is_simple true的話顯示到市 false顯示到網通電信等等

      ******/

      function convertip($ip,$is_simple=true,$ipfile='include/data/ip.dat') {

      $return = '';

      if( !file_exists($ipfile) ) $ipfile = '../'.$ipfile;

      if(preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/", $ip)) {

      $iparray = explode('.', $ip);

      if($iparray[0] == 10 || $iparray[0] == 127 || ($iparray[0] == 192 && $iparray[1] == 168) || ($iparray[0] == 172 && ($iparray[1] >= 16 && $iparray[1] <= 31))) {

      return '局域網';

      } elseif($iparray[0] > 255 || $iparray[1] > 255 || $iparray[2] > 255 || $iparray[3] > 255) {

      return 'ERR';

      } elseif($is_simple) {

      return change_simply_area(convertip_tiny($ip, $ipfile));

      }

      else {

      return convertip_tiny($ip, $ipfile);

      }

      }

      }

      /**

      * 從ip文件得到ip所屬地區

      *

      * 過濾掉了具體的位置(如 網通/電信/**網吧) 基本到市

      ***/

      function convertip_tiny($ip, $ipdatafile) {

      static $fp = NULL, $offset = array(), $index = NULL;

      $ipdot = explode('.', $ip);

      $ip = pack('N', ip2long($ip));

      $ipdot[0] = (int)$ipdot[0];

      $ipdot[1] = (int)$ipdot[1];

      if($fp === NULL && $fp = @fopen($ipdatafile, 'rb')) {

      $offset = unpack('Nlen', fread($fp, 4));

      $index = fread($fp, $offset['len'] - 4);

      } elseif($fp == FALSE) {

      return '- Invalid IP data file';

      }

      $length = $offset['len'] - 1028;

      $start = unpack('Vlen', $index[$ipdot[0] * 4] . $index[$ipdot[0] * 4 + 1] . $index[$ipdot[0] * 4 + 2] . $index[$ipdot[0] * 4 + 3]);

      for ($start = $start['len'] * 8 + 1024; $start < $length; $start += 8) {

      if ($index{$start} . $index{$start + 1} . $index{$start + 2} . $index{$start + 3} >= $ip) {

      $index_offset = unpack('Vlen', $index{$start + 4} . $index{$start + 5} . $index{$start + 6} . "\x0");

      $index_length = unpack('Clen', $index{$start + 7});

      break;

      }

      }

      fseek($fp, $offset['len'] + $index_offset['len'] - 1024);

      if($index_length['len']) {

      return mb_convert_encoding(fread($fp, $index_length['len']),'utf-8','gb2312'); //將讀出的gb編碼數據轉成utf-8并返回

      } else {

      return '未知';

      }

      }

      function change_simply_area($area) {

      $tmp = explode(' ',$area); //過濾掉一些具體信息

      return $tmp[0];

      }

      里面那個ipfile你可以去下載一個discuz 在 ipdata目錄里面有wry.dat的文件就是了 其實這個就是網上用的最多的那個純真版數據庫 很多顯示ip的qq用的也是那個

      這兩個函數的原型參考 discuz 里面 include\misc.func.php

    【php怎樣根據ip地址查地區】相關文章:

    PHP根據IP地址獲取所在城市具體實現07-16

    php根據IP地址獲取當前地理位置接口05-18

    php通過Chianz.com獲取IP地址與地區的方法08-12

    php如何獲得ip地址05-29

    php獲取IP物理地址的方法05-15

    PHP中IP地址與整型數字互相轉換04-25

    IP地址和MAC地址分類08-10

    php爬蟲程序中怎么樣偽造ip地址防止被封07-30

    ip地址如何修改呢02-05

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人