Ⅰ php的 ip 定位,經緯度至少精確到鎮,附上源碼和詳解
ip定位一般對於電腦來說的,精確到鎮有點難,淘寶的ip api服務,只能精確到區,或者市
手機的話,你需要獲取位置,位置會因為手機質量的好壞,偏差很大,蘋果和諾基亞手機定位很准,安卓各種機型,各種偏差,使用手機定位的是,html5有獲取定位的方法,然後得到經緯度,發到網路地圖 api,獲取更精確的地址,
ip定位想要那麼精確,有點難,你得找個好點的ip庫服務,達到你要的精讀就行
Ⅱ 如何實現網站根據訪問者的ip自動跳轉到相應地方區域
不知道你用的是什麼編程語言,給你貼個PHP的吧,網上有很多源碼可以自己找一下
<?php
//返回當前IP的城市字元串
function convertip($ip) {
//IP數據文件路徑
$dat_path = 'QQWry.Dat';
//檢查IP地址
if(!preg_match("/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/", $ip)) {
return 'IP Address Error';
}
//打開IP數據文件
if(!$fd = @fopen($dat_path, 'rb')){
return 'IP date file not exists or access denied';
}
//分解IP進行運算,得出整形數
$ip = explode('.', $ip);
$ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];
//獲取IP數據索引開始和結束位置
$DataBegin = fread($fd, 4);
$DataEnd = fread($fd, 4);
$ipbegin = implode('', unpack('L', $DataBegin));
if($ipbegin < 0) $ipbegin += pow(2, 32);
$ipend = implode('', unpack('L', $DataEnd));
if($ipend < 0) $ipend += pow(2, 32);
$ipAllNum = ($ipend - $ipbegin) / 7 + 1;
$BeginNum = 0;
$EndNum = $ipAllNum;
//使用二分查找法從索引記錄中搜索匹配的IP記錄
while($ip1num>$ipNum || $ip2num<$ipNum) {
$Middle= intval(($EndNum + $BeginNum) / 2);
//偏移指針到索引位置讀取4個位元組
fseek($fd, $ipbegin + 7 * $Middle);
$ipData1 = fread($fd, 4);
if(strlen($ipData1) < 4) {
fclose($fd);
return 'System Error';
}
//提取出來的數據轉換成長整形,如果數據是負數則加上2的32次冪
$ip1num = implode('', unpack('L', $ipData1));
if($ip1num < 0) $ip1num += pow(2, 32);
//提取的長整型數大於我們IP地址則修改結束位置進行下一次循環
if($ip1num > $ipNum) {
$EndNum = $Middle;
continue;
}
//取完上一個索引後取下一個索引
$DataSeek = fread($fd, 3);
if(strlen($DataSeek) < 3) {
fclose($fd);
return 'System Error';
}
$DataSeek = implode('', unpack('L', $DataSeek.chr(0)));
fseek($fd, $DataSeek);
$ipData2 = fread($fd, 4);
if(strlen($ipData2) < 4) {
fclose($fd);
return 'System Error';
}
$ip2num = implode('', unpack('L', $ipData2));
if($ip2num < 0) $ip2num += pow(2, 32);
//沒找到提示未知
if($ip2num < $ipNum) {
if($Middle == $BeginNum) {
fclose($fd);
return 'Unknown';
}
$BeginNum = $Middle;
}
}
$ipFlag = fread($fd, 1);
if($ipFlag == chr(1)) {
$ipSeek = fread($fd, 3);
if(strlen($ipSeek) < 3) {
fclose($fd);
return 'System Error';
}
$ipSeek = implode('', unpack('L', $ipSeek.chr(0)));
fseek($fd, $ipSeek);
$ipFlag = fread($fd, 1);
}
if($ipFlag == chr(2)) {
$AddrSeek = fread($fd, 3);
if(strlen($AddrSeek) < 3) {
fclose($fd);
return 'System Error';
}
$ipFlag = fread($fd, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($fd, 3);
if(strlen($AddrSeek2) < 3) {
fclose($fd);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($fd, $AddrSeek2);
} else {
fseek($fd, -1, SEEK_CUR);
}
while(($char = fread($fd, 1)) != chr(0))
$ipAddr2 .= $char;
$AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));
fseek($fd, $AddrSeek);
while(($char = fread($fd, 1)) != chr(0))
$ipAddr1 .= $char;
} else {
fseek($fd, -1, SEEK_CUR);
while(($char = fread($fd, 1)) != chr(0))
$ipAddr1 .= $char;
$ipFlag = fread($fd, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($fd, 3);
if(strlen($AddrSeek2) < 3) {
fclose($fd);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($fd, $AddrSeek2);
} else {
fseek($fd, -1, SEEK_CUR);
}
while(($char = fread($fd, 1)) != chr(0)){
$ipAddr2 .= $char;
}
}
fclose($fd);
//最後做相應的替換操作後返回結果
if(preg_match('/http/i', $ipAddr2)) {
$ipAddr2 = '';
}
$ipaddr = "$ipAddr1 $ipAddr2";
$ipaddr = preg_replace('/CZ88.Net/is', '', $ipaddr);
$ipaddr = preg_replace('/^s*/is', '', $ipaddr);
$ipaddr = preg_replace('/s*$/is', '', $ipaddr);
if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {
$ipaddr = 'Unknown';
}
return $ipaddr;
}
//查找字元串
function findstr($str, $substr)
{
$m = strlen($str);
$n = strlen($substr );
if ($m < $n) return false ;
for ($i=0; $i <=($m-$n+1); $i ++){
$sub = substr( $str, $i, $n);
if ( strcmp($sub, $substr) == 0) return true;
}
return false ;
}
?>
<?php
$Clientip=$_SERVER["REMOTE_ADDR"];
$ClientSity=convertip($Clientip);
if (findstr($ClientSity,"北京")){
//out.print("beijing");
Header("Location: http://www.qq.com");
}else{
//out.print("false beijing");
Header("Location: http://www.163.com");
}
?>
Ⅲ 誰能把我個忙啊.給我弄個asp的ip定位城市的代碼啊,急急急
用Qq的ip地址庫可以實現
Ⅳ 求asp獲取用戶IP地區的源碼
去下個動網的IP地址庫
用下面這個函數
表名改成你的就可以
Function Fn_GetIPAddr(Ipaddr)
'根據IP地址得到所在地區
dim tmpSQL,rs,tmpIpAddr
dim str1,str2,str3,str4,num
If isnumeric(left(Ipaddr,2)) Then
If Ipaddr= "127.0.0.1 " Then Ipaddr= "192.168.0.1 "
str1=left(Ipaddr,instr(Ipaddr, ". ")-1)
Ipaddr=mid(Ipaddr,instr(Ipaddr, ". ")+1)
str2=left(Ipaddr,instr(Ipaddr, ". ")-1)
Ipaddr=mid(Ipaddr,instr(Ipaddr, ". ")+1)
str3=left(Ipaddr,instr(Ipaddr, ". ")-1)
str4=mid(Ipaddr,instr(Ipaddr, ". ")+1)
If isNumeric(str1)=0 Or isNumeric(str2)=0 Or isNumeric(str3)=0 Or isNumeric(str4)=0 Then
Else
num=cint(str1)*256*256*256+cint(str2)*256*256+cint(str3)*256+cint(str4)-1
tmpSQL = "select top 1 Country from ipdata where StartIP <= ' "&num& " ' and EndIP > = ' "&num& " ' "
'Response.Write(tmpSQL)
set rs = conn.execute(tmpSQL)
if rs.bof and rs.eof then
Fn_GetIPAddr = "未知地址 "
else
Fn_GetIPAddr = rs( "Country ")
end if
'end if
end if
Else
Fn_GetIPAddr = "無效IP "
End If
End Function
Ⅳ 求網站顯ip源碼
你網路一下:
顯示來訪IP地址免費代碼很多免費調用的介面非常方便
但是網路知道的部分管理實在腦殘缺鈣,只要發了不認識的代碼就以廣告為由屏蔽
甚至哪天心情不爽,失戀,沒吃飽,都會封貼,禁止幫人...
所以建議你自己搜一下剛才的關鍵字,不便之處還望諒解...望採納
或許一會這個回復也沒了...揭短總是容易引起他們不爽...
Ⅵ java中怎樣寫通過IP查到城市地址的代碼
你去下載一個純真ip查詢的軟體 然後把里邊的地址導出來 是一個txt的文件
里邊的格式是這樣的
1.4.5.0 1.4.63.255 福建省 電信
1.4.64.0 1.4.127.255 廣東省 電信
1.4.128.0 1.8.255.255 福建省 電信
前2個是ip 最後一個是地址
......然後就不用我多說了把........
Ⅶ 如何用C#編寫代碼 查詢出本機所在的城市
用Webbrowser去訪問htt+p://ww+w.ip138.c+om/(把+替換為空),然後獲取webbrowser的源代碼就可以獲取到你本機的城市、IP等信息。
Ⅷ 易語言取ip所在地源碼
易語言論壇有取ip所在地源碼。
http://bbs.eyuyan.com/read.php?tid=313153
Ⅸ php怎麼實現像百姓網,58同城網,趕集網,城市IP定位 代碼更好!
城市ip定位?如果要用ip來知道地址的話,必須有ip和地址的對應庫,現在很多DNS伺服器可以做到這一點。所以這個還是需要有一定的基礎數據才行 。如果是手機定位的話,主要是通過和鄰近的幾個信號站,返回的延遲時間不同,推算出來的。
Ⅹ 易語言取ip地址及地理位置源碼,希望朋友幫我下
供參考:
.版本 2
.支持庫 internet
.程序集 窗口程序集1
.子程序 _按鈕1_被單擊
.局部變數 分割, 文本型, , "0"
分割 = 分割文本 (到文本 (HTTP讀文件 (「ht=tp:=//=fw.q=q.c=o=m/=i=pa=ddress」)), #引號, )'請把=號刪除
編輯框1.內容 = 分割 [2] + 「-」 + 分割 [6] + 分割 [8]