Ⅰ 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]