PHP 根据IP获取地区查询数据库内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 根据IP获取地区查询数据库内容相关的知识,希望对你有一定的参考价值。

表1:dede_ip(IP数据库)
字段:start(开始IP段)
end(结束IP段)
Province(省份)
city(城市)
表2:dede_dealer (内容)
Name(名称)
Address(地址)
Phone(电话)
City(城市)
Province(省份)
第一步已经查询出来:
<?
$servername ='localhost';
$dbname='8684'; //数据库名
$dbusername ='root'; //数据库用户名
$dbpassword ='123456'; //数据库密码

$link=mysql_connect($servername,$dbusername,$dbpassword);
mysql_select_db($dbname) or die();
mysql_query("set names 'gbk'");

function get_real_ip()
$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;

for($i=0;$i<count($ips);$i++)
if (!eregi("^(10│172.16│192.168).",$ips[$i]))
$ip=$ips[$i];
break;



$ip=$ip?$ip:$_SERVER['REMOTE_ADDR'];
list($ip1,$ip2,$ip3,$ip4)=explode(".",$ip);
return $ip1*pow(256,3)+$ip2*pow(256,2)+$ip3*256+$ip4;

$ip=get_real_ip();
$sql="select * from ip where start<=$ip order by start desc limit 1";
$q=mysql_query($sql);
$rs=mysql_fetch_array($q);
$city=$rs["city"];

echo $city;
?>
提问:如何使用以上获取到的$city去查询表2的city从而获取表二的全部字段。

有可能你查询出来的是很多条记录。
而你在$rs=mysql_fetch_array($q);的使用上可能还有不熟悉的地方。你打印出来看看具体是什么。追问

查询表一只得一个结果,因为是根据IP查询的,是唯一的。查询表二时也是对应一个结果。

追答

那你的第一次查询的$city打印出来了?正常?
第二个表查询,看你描述也是有可能有多条记录的啊,一个城市可以有多个地址啊。

追问

我在制作表二时city这一项是没有重复的
我有一个构思,就是能不能两表关联查询,因为city这一项应该可以关联的。初次接触php,请指点

追答

我的提问你都没回答。。先分两步查来实现吧,先把简单的弄懂。你说那个关联查询不在php,在MYsql。你百度没收到消息?

参考技术A select * from tab2 where city=city1追问

我试了很多次都是显示空白。麻烦你把完整代码贴出来可以吗

地理 IP 和国家/地区/城市数据库

【中文标题】地理 IP 和国家/地区/城市数据库【英文标题】:Geo IP and country/region/city DB 【发布时间】:2014-02-27 17:39:03 【问题描述】:

祝你有美好的一天!

您能否告诉我免费准确的多语言数据库(经常更新):

通过IP(来自PHP)定位国家+地区+城市(可能是+时区); 现场建立国家/地区/城市下拉列表(即例如获取 来自 PHP 地区(按国家/地区)和城市(按地区/国家/地区)。的名字 国家/地区/城市必须使用不同的语言。

谢谢!

【问题讨论】:

【参考方案1】:

MaxMind 的GeoIP2 and GeoLite2 databases 支持多种语言。它们目前包括德语、英语、西班牙语、法语、日语、葡萄牙语、俄语和简体中文。您还可以使用包含的geoname_id 查找位置,使用GeoNames 以获取其他语言的位置名称。

格式还有一个PHP API。

【讨论】:

谢谢,我测试过了。如何“按国家/地区从 PHP 地区和城市按地区/国家/地区获取”?需要“现场建立国家/地区/城市下拉列表”。 对于国家/地区/城市下拉列表,我会向您推荐地理数据源。 (geodatasource.com/software/…) 下拉列表的免费替代数据源是GeoNames。它应该与 MaxMind 数据库很好地集成,因为 MaxMind 将其用作数据源。

以上是关于PHP 根据IP获取地区查询数据库内容的主要内容,如果未能解决你的问题,请参考以下文章

php程序 js判断ip地区根据不同ip输出不同内容(商务通代码)

.net中怎么根据ip获取省市啊

linux中shell用nali查询IP后比对数据输出对应的地区的脚本怎么写

怎样根据IP地址查询所在地

根据ip地址获取地区信息的接口

php获取用户ip和地区