本文目錄一覽:
- 1、php根據ip地址查地區
- 2、如何進行PHP查詢ip所在地
- 3、php獲取了ip地址,用php怎麼獲取ip的地理位置?請大蝦賜教!
- 4、php如何實現通過ip獲取地理位置
- 5、php獲取用戶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地址取得地理位置
*/
function get_ip_arr()
{
$ip=file_get_contents(“”);
preg_match_all(“/\”(.*)\”/”,$ip,$arr);
return $arr;
}
//返回一個數組,包括地區、IP等信息,自行獲取即可。
?
php獲取了ip地址,用php怎麼獲取ip的地理位置?請大蝦賜教!
用純真ip數據庫啊,這裡有個資料是介紹php操作純真ip數據庫的,是原查詢吧query8.com里提取出來的,用時先去網上搜純真ip數據庫下載,查詢吧php版讀取純真ip數據庫源碼
php如何實現通過ip獲取地理位置
通過ip地址定位接口,調用的百度地圖接口,每人每天有30000次免費調用機會。。
你可以調用我的接口,但不要多次調用。最好是按照我這篇文章中的方法自己搭建一個接口,畢竟我的接口很有可能無法實現你的要求。
著作權歸作者所有。
商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
作者:caijun
鏈接:
來源:
php獲取用戶ip和地區
function getIp() {
if (getenv(“HTTP_CLIENT_IP”) strcasecmp(getenv(“HTTP_CLIENT_IP”), “unknown”)) $ip = getenv(“HTTP_CLIENT_IP”);
else if (getenv(“HTTP_X_FORWARDED_FOR”) strcasecmp(getenv(“HTTP_X_FORWARDED_FOR”), “unknown”)) $ip = getenv(“HTTP_X_FORWARDED_FOR”);
else if (getenv(“REMOTE_ADDR”) strcasecmp(getenv(“REMOTE_ADDR”), “unknown”)) $ip = getenv(“REMOTE_ADDR”);
else if (isset($_SERVER[‘REMOTE_ADDR’]) $_SERVER[‘REMOTE_ADDR’] strcasecmp($_SERVER[‘REMOTE_ADDR’], “unknown”)) $ip = $_SERVER[‘REMOTE_ADDR’];
else $ip = “unknown”;
return $ip;
}
使用這個可以獲取id,至於要把ip轉換從真實地址可以使用新浪有道提供的api或者用本地的QQWry.Dat文件這個文件自己去下載,不過要經常更新
原創文章,作者:ADVU,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/146923.html