/
获取客户端IP地址
@param integer $type
@return mixed
/
function getclientip() {
static $realip = NULL;
if($realip !== NULL){
return $realip;
}
if(isset($_SERVER)){
if(isset($_SERVER['><php
function getip() {
if (getenv ( ";
具体的话,可以去这里详细了解>
我想楼主应该是要全部的地址吧,例“ >
本文所述php实例可以完成获取局域网所有用户的电脑IP和主机名、及mac地址的功能,对于php程序设计人员有一定的参考借鉴价值。完整代码如下:
<php
$bIp
=
gethostbyname($_ENV['COMPUTERNAME']);
//获取本机的局域网IP
echo
"本机IP:",$bIp,"\n";
echo
"本机主机名:",gethostbyaddr($bIp),"\n\n\n";
//gethostbyaddr
函数可以根据局域网IP获取主机名
//默认网关IP
list($ipd1,$ipd2,$ipd3)
=
explode('',$bIp);
$mask
=
$ipd1
""
$ipd2
""
$ipd3
;
exec('arp
-a',$aIp);
//获取局域网中的其他IP
foreach(
$aIp
as
$ipv)
{
if(strpos($ipv,'接口')
!==
false)
{//一下显示的IP是否是当前局域网中的
而不是其他的类型
可以在cmd下试一下命令
$bool
=
false;
preg_match('/(:(:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]\d)))\){3}(:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]\d)))/',$ipv,$arr);
if(strcmp($arr[0],$bIp)
==
0)
{
$bool
=
true;
}
}
else
{
if($bool)
{
$str
=
preg_replace('/\s+/',
'|',
$ipv);
$sArr
=
explode('|',$str);
if($sArr[1]
==
'Internet'
||
empty($sArr[1]))
{
continue;
}
//去除默认网关
if(strcmp($mask
"1",
$sArr[1])
==
0)
{
continue;
}
//去除同网关下255的IP
if(strcmp($mask
"255",
$sArr[1])
==
0)
{
continue;
}
//去除组播IP
list($cIp)
=
explode('',
$sArr[1]);
if($cIp
>=
224
&&
$cIp
<=
239)
{
continue;
}
echo
"IP地址:|",$sArr[1],"|\n";
echo
"MAC地址:",$sArr[2],"\n";
echo
"主机名:",gethostbyaddr($sArr[1]),"\n";
echo
"\n\n";
}
}
}
该程序是在cli模式下运行的,在浏览器上应该也可以
php获取局域网中的用户ip功能就完成了,主要用到的是php的exec函数
和window的arp
-a
命令
其中获取本机IP:gethostbyname($_ENV['COMPUTERNAME'])
有别于以往的写法,感兴趣的朋友可以继续深入研究一下。
获取主机名函数:gethostbyaddr(IPd)
这个函数功能也很强大。
发一个函数给你
/获取客户端IP地址
@param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
@param boolean $adv 是否进行高级模式获取(有可能被伪装)
@return mixed
/
function get_client_ip($type = 0,$adv=false) {
$type = $type 1 : 0;
static $ip = NULL;
if ($ip !== NULL) return $ip[$type];
if($adv){
if (isset($_SERVER['>}
如果是本地测试的话,获取到的是127001
这种功能,只能调用第三方的接口了,百度地图API就有这个接口addressComponents,逆地址解析,参考方法如下:
<GeocoderSearchResponse>
<status>OK</status>
<result>
<location>
<lat>38990998</lat>
<lng>103645966</lng>
</location>
<formatted_address>甘肃省武威市民勤县</formatted_address>
<business/>
<addressComponent>
<streetNumber/>
<street/>
<district>民勤县</district>
<city>武威市</city>
<province>甘肃省</province>
</addressComponent>
<cityCode>118</cityCode>
</result>
</GeocoderSearchResponse>
地理(Geography),是世界或某一地区的自然环境(山川、气候等)及社会要素的统称。“地理”一词最早见于中国《易经》。古代的地理学主要探索关于地球形状、大小有关的测量方法,或对已知的地区和国家进行描述。
地理学是研究地球表面的地理环境中各种自然现象和人文现象,以及它们之间相互关系的学科。地理是一门综合性的基础学科。
如果你的系统是vista,和设置ipv4地址的方法一样。
如果是xp,打开一个dos窗口,照下面方法输入。
C:\>netsh
netsh>interface ipv6
netsh interface ipv6>add address "本地连接" fe80:a520:1314::1
/ 设定固定的IPv6地址,“本地连接”是指你的机上建立的某个连接的名称 /
netsh interface ipv6>add dns "本地连接" 2001:251:e101:0::2
/ 设定IPv6 DNS地址 /
下面的代码用于获得真实的客户端ip,俗话说,道高一尺魔高一丈,更高级的伪装能够骗过这种检测也有可能,不过至少让伪装的门槛提高不少。
function getip() {
$unknown = 'unknown';
if ( isset($_SERVER['>
以上就是关于php如何获取请求接口资源的请求者的IP地址全部的内容,包括:php如何获取请求接口资源的请求者的IP地址、如何用php获取客户端正确的ip地址、PHP中怎么获取浏览器地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)