用PHP实现标准的IP Whois查询
由于Internet的历史原因,apin负责整个网络IP的整体规划以及北美区
创新互联公司成立与2013年,先为孙吴等服务建站,孙吴等地企业,进行企业商务咨询服务。为孙吴企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
还有部分非洲地区的IP分配管理,与此相应的是,whois.apin.net是IP
whois的root
server,标准的IP
whois查询方法是,首先向whois.apin.net查询某个IP属于哪个大区,然后再向该区的whois
服务器查询此IP的whois详细信息。
目前负责
IPV4的大区
whois.arin.net
美洲区
北美
whois.apnic.net
亚太区
包括亚洲和澳大利亚
whois.ripe.net
欧洲区
欧洲/中东(西亚)/北非
whois.lacnic.net
拉美区
拉丁美洲和加勒比海区域
非洲网络的IP查询也在whois.arin.net
向某个whois服务器提交whois查询的过程
打开一个到whois服务器的43端口的连接,然后发送要查询的域名
和一个回车换行。如果要查询多个域名,请用空格分开然后从sokect中读取结果。最后服务器将自动断开连接。
用PHP实现
1.验证IP(用
ip2long代替
ereg)
2.向
whois.arin.net查询,如果数据库中没有相关信息,会给出一个Referral
Server的URL,格式如下
ReferralServer:
然后根据此信息,继续查询
代码如下
whoisip.php
?php
include_once
"lang.inc.php";
$IP
=
isset($_GET['ip'])?$_GET['ip']:'blank';
if
(-1
===
ip2long($ip))
die(str_replace('%IP%',
$IP,
$Text['ip_invalid']));
echo
GetWhois($IP);
function
GetWhois($IP)
{
global
$Text;
$rootwhois
=
'whois.arin.net';
$buffer
=
str_replace('%SERVER%',
$rootwhois,
$Text['sock_connect']);
$buffer1
=
ReadSocket($rootwhois,$IP);
if
($buffer1
!==
'')
{
$whois
=
SubStrByTag("ReferralServer:
whois://","\n",$buffer1);
//remove
port
number
":43";
if
(
($pos=strpos($whois,":"))
!==
FALSE)
{
$whois
=
substr($whois,
0,$pos);
}
if
($whois
!==
'')
{
$buffer
.=
str_replace('%SERVER%',
$whois,
$Text['sock_connect']);
$buffer
.=
ReadSocket($whois,$IP);
}
else
{
$buffer
.=
$buffer1;
}
}
return
nl2br($buffer);
}
function
SubStrByTag($firstTag,$secondTag,$longStr)
{
$firstPos
=
strpos
($longStr,$firstTag);
$ret
=
'';
if
($firstPos
!==
FALSE)
{
$secondPos
=
strpos
($longStr,$secondTag,$firstPos);
if
($secondPos
!==
FALSE)
{
$firstPos
+=
strlen($firstTag);
$ret
=
substr($longStr,$firstPos,$secondPos-$firstPos);
}
}
return
$ret;
}
function
ReadSocket($whois,$ip)
{
global
$Text;
$buffer
=
'';
if
(!$sock
=
fsockopen(
$whois,
43,
$errNum,
$errStr,
20))
{
$buffer
=
str_replace('%SERVER%',
$whois,
$Text['sock_fail']);
}
else
{
fputs($sock,"$ip\n");
//$buffer
=
fread($sock,
8192);
while(!feof($sock))
$buffer.=fgets($sock,
8192);
fclose($sock);
}
return
$buffer;
}
?
语言文件:
lang.inc.php
?php
$Text
=
Array(
'ip_invalid'='I
want
to
get
a
valid
IP,
but
it
is
[%IP%].',
'sock_connect'='Ask
%SERVER%
...
',
'sock_fail'='Cannot
connect
to
the
host:%SERVER%'
);
?
其他有名的whois服务器
1.Tucows
(whois.opensrs.net)
一次只能一个连接
dnsstuff就是查询的它
2.BulkRegister
(whois.bulkregiter.net)
小心它临时封IP,如果大量连接的话
3.Network
Solutions
(whois.networksolutions.com)
一天只能查1000次
4.Go
Daddy
(whois.godaddy.com)
5.whois.abuse.net
用 php 如何根据城市代码 输出全国的省和相应的市
id fid name
跟分类一个思想,
城市表 增加个fid用于记录所属省的ID
省级则fid为0
更具省id取出相应城市 select * form city where fid = id;
根据省名称,就先查出省对应的id,再查对应的城市
PHP 根据IP获取地区查询数据库内容
有可能你查询出来的是很多条记录。
而你在$rs=mysql_fetch_array($q);的使用上可能还有不熟悉的地方。你打印出来看看具体是什么。
thinkphp根据身份证怎么获取所在地区
方法很多,这里举出两种
通过一些平台接口进行查询,例:有道身份证查询这个(貌似封了),可以自行百度下
自建数据库查询,原理:身份证号码的前6位是用来做地区区别码的,所以只要找到各个地区的区别码,用正则匹配就可以知道身份证所在地区了
分享文章:php根据地区查询数据 php 查询
标题来源:http://scgulin.cn/article/hgpcdd.html