免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10337 | 回复: 12
打印 上一主题 下一主题

[分享]通过ip查询所在省份和城市(数据文件已上传) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-17 11:59 |只看该作者 |倒序浏览
http://www.xjtuer.com/php-ip-to-city/

其实程序很简单,工作主要是对数据部分
分割ip段然后保存到数据库

用到的2个函数
function _GetIP()
{
    $ip = false;
    if(!empty($_SERVER["HTTP_CLIENT_IP"])){
        $ip = $_SERVER["HTTP_CLIENT_IP"];
        }
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
        $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
        if ($ip){
            array_unshift($ips, $ip);
            $ip = FALSE;
        }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ($i = 0; $i < count($ips); $i++){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!eregi ("^(10|172.16|192.16.", $ips[$i])){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ip = $ips[$i];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
&nbsp;&nbsp;&nbsp;&nbsp;}


function ip2city($ip)
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global $DB;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tmp_ip = explode(".", $ip);
&nbsp;&nbsp;&nbsp;&nbsp; $IP2Num=$tmp_ip['0']*256*256*256+$tmp_ip['1']*256*256+$tmp_ip['2']*256+$tmp_ip['3'];
&nbsp;&nbsp;&nbsp;&nbsp; $FirstRow = $DB -> queryFirstRow("select city,province from ip_address where '$IP2Num'>=ip1 and '$IP2Num'<=ip2 order by id desc");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$info = array(
&nbsp;&nbsp;&nbsp;&nbsp;'province' => $FirstRow['province'],
&nbsp;&nbsp;&nbsp;&nbsp;'city' => $FirstRow['city']
&nbsp;&nbsp;&nbsp;&nbsp;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $info;
&nbsp;&nbsp;&nbsp;&nbsp;}


使用:
$ip = _GetIP();
$info = ip2city($ip);
$province = $info['province'];
$city = $info['city'];

呵呵,在cu注册很长时间了,也没贡献过什么东西,希望大家用的上,这个是之前做天气预报根据ip判断地区搞的,没什么技术含量,体力活倒是比较多,数据文件在附件了,用phpmyadmin直接导入就可以了

[ 本帖最后由 langyufeng 于 2008-3-17 13:11 编辑 ]

ip_address.sql.gz

229.15 KB, 下载次数: 882

论坛徽章:
0
2 [报告]
发表于 2008-03-17 23:11 |只看该作者
谢谢lz  能说一下 这些ip 是如何获取和整理的吗?

论坛徽章:
0
3 [报告]
发表于 2008-03-18 03:07 |只看该作者
谢谢。看看

论坛徽章:
0
4 [报告]
发表于 2008-03-18 14:57 |只看该作者
windows 下 汉字是乱码,怎么处理?

论坛徽章:
0
5 [报告]
发表于 2008-03-18 15:58 |只看该作者
不错,收藏了

论坛徽章:
0
6 [报告]
发表于 2008-03-18 16:44 |只看该作者
原帖由 benjiam 于 2008-3-17 23:11 发表
谢谢lz  能说一下 这些ip 是如何获取和整理的吗?

纯真ip库

论坛徽章:
0
7 [报告]
发表于 2008-03-18 16:45 |只看该作者
原帖由 fan12 于 2008-3-18 14:57 发表
windows 下 汉字是乱码,怎么处理?

应该是你程序编码的问题,检查一下数据库和程序的编码

论坛徽章:
0
8 [报告]
发表于 2008-03-19 12:34 |只看该作者
多谢,刚好要整理,现在倒是免了

论坛徽章:
0
9 [报告]
发表于 2008-03-19 17:47 |只看该作者
o 纯真的解析程序 我也写过一个

论坛徽章:
0
10 [报告]
发表于 2008-03-29 11:16 |只看该作者
您对本贴的看法:鲜花[0] 臭蛋[1]
晕死
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP