+ -
当前位置:首页 → 问答吧 → 一个可以返回指定IP地址所在省份的函数,带数据库541KB

一个可以返回指定IP地址所在省份的函数,带数据库541KB

时间:2009-11-29

来源:互联网

本帖最后由 kupe 于 2009-11-29 15:43 编辑

声明: 程序为本人原创, 函数简单加密,但不影响使用

只能回返确切的省, 对有些学校,研究机构的IP地址,可能无法识别

演示地址: http://www.cnbluetu.com/getIpFromProvince/   



编码为UTF-8

约定:
如果IP是局域网内的, 视为国外地址

调用方法:
调用很简单 getIpFromProvince($ip)  

返回值: 省的名称, 如果是国外IP,则返回空

数据库大小:  541KB
一个可以返回指定IP地址所在省份的函数,带数据库, 数据库为 500多KB
header("content-type:text/html;charset=utf-8;"); include_once('getIpFromProvince.php'); function GetIP() { if ($ip = getenv('HTTP_CLIENT_IP')); elseif ($ip = getenv('HTTP_X_FORWARDED_FOR')); elseif ($ip = getenv('HTTP_X_FORWARDED')); elseif ($ip = getenv('HTTP_FORWARDED_FOR')); elseif ($ip = getenv('HTTP_FORWARDED')); else $ip = $_SERVER['REMOTE_ADDR']; return $ip; } echo "<div style='border:1px solid #ccc;background:#ff88cc;padding:5px;margin:5px 0px;font-weight:20px;'>此函数可以判断某个IP地址是属于哪个省 :) </div>"; if($ip = $_POST['ip']) { echo "您本地的IP:" . GetIP() . "<br>"; } else { $ip = getIp(); } if($area = getIpFromProvince($ip)) { echo "<font color='blue'> $ip 在 $area </font>"; } else { echo "<font color='red'> $ip 在国外</font>"; } ?> <form action="" method="post"> 请输入IP地址: <input type="text" value="<?php echo $ip;?>" name="ip"> <Input type="submit" value="执行验证"> </form>
getIpFromProvince.zip (94.59 KB)
下载次数: 25
2009-11-29 15:33

作者: kupe   发布时间: 2009-11-29

谢谢....

作者: whl1295a   发布时间: 2009-11-30

腾讯的这个也很好用啊,还不用维护。fw.qq.com/ipaddress

作者: 1294822   发布时间: 2009-11-30

楼3的不错。

作者: mailangel123   发布时间: 2009-12-05

我也顶一下三楼.

作者: kupe   发布时间: 2009-12-24

先用用看看吧,现在也不好说什么

作者: iege   发布时间: 2010-01-22

既然还是加密的~~~~~
看来又要解密了!!!!!

作者: 齐迹   发布时间: 2010-01-22

附上解密后的文件
呵呵
支持开源!
<? function getIpFromProvince($ip = '') { if ($ip) { $ip2 = sprintf('%u',ip2long($ip)); } else { $ip = getIP(); $ip2 = sprintf('%u',ip2long($ip)); } $path = "province.long.db"; $tag = reset(explode('.',$ip)); if(substr($ip,0,8) == '192.168.'||'127'== $tag) { return false; } $aa = file_get_contents($path); $key = file_get_contents('province.long.key'); if($key != md5($aa)) { exit('数据库已经损坏'); } $iptable = unserialize(base64_decode(str_rot13($aa))); unset($aa); if(isset($iptable[$tag])) { foreach($iptable[$tag] as $k =>$v) { if($v[0] <= $ip2 &&$v[1] >= $ip2) { return $v[3]; } } } unset($iptable); return false; } ?>

作者: 齐迹   发布时间: 2010-01-22