php如何获取请求接口资源的请求者的IP地址

php如何获取请求接口资源的请求者的IP地址,第1张

/

     获取客户端IP地址

     @param integer $type

     @return mixed

    /

   function getclientip() {

       static $realip = NULL;

        

       if($realip !== NULL){

           return $realip;

       }

       if(isset($_SERVER)){

           if(isset($_SERVER['>$ts = time();

$this_monday = this_monday($ts);

echo date('Y-m-d H:i:s', $this_monday);

//这个星期的星期一  

// @$timestamp ,某个星期的某一个时间戳,默认为当前时间  

// @is_return_timestamp ,是否返回时间戳,否则返回时间格式  

function this_monday($timestamp=0,$is_return_timestamp=true){  

    static $cache ;  

    $id = $timestamp$is_return_timestamp;  

    if(!isset($cache[$id])){  

        if(!$timestamp) $timestamp = time();  

        $monday_date = date('Y-m-d', $timestamp-86400date('w',$timestamp)+(date('w',$timestamp)>086400:-/686400/518400));  

        if($is_return_timestamp){  

            $cache[$id] = strtotime($monday_date);  

        }else{  

            $cache[$id] = $monday_date;  

        }  

    }  

    return $cache[$id];  

   

}

上周一的函数则为

$ts = time();

$last_monday = last_monday($ts);

echo date('Y-m-d H:i:s', $last_monday);

//上周一  

// @$timestamp ,某个星期的某一个时间戳,默认为当前时间  

// @is_return_timestamp ,是否返回时间戳,否则返回时间格式  

function last_monday($timestamp=0,$is_return_timestamp=true){  

    static $cache ;  

    $id = $timestamp$is_return_timestamp;  

    if(!isset($cache[$id])){  

        if(!$timestamp) $timestamp = time();  

        $thismonday = this_monday($timestamp) - /786400/604800;  

        if($is_return_timestamp){  

            $cache[$id] = $thismonday;  

        }else{  

            $cache[$id] = date('Y-m-d',$thismonday);  

        }  

    }  

    return $cache[$id];  

}

本文所述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)

这个函数功能也很强大。

题主是否想询问“php导出有时候有数据有时候没数据的原因是什么”原因是数据库连接错误,SQL查询错误,文件格式错误。

1、数据库连接错误:如果在导出数据时无法连接到数据库,那么就无法获取数据。

2、SQL查询错误:如果查询语句出现错误,那么就无法获取数据,可以检查SQL语句是否正确,是否存在语法错误。

3、文件格式错误:如果导出的文件格式不正确,就无法打开文件查看数据。

以上就是关于php如何获取请求接口资源的请求者的IP地址全部的内容,包括:php如何获取请求接口资源的请求者的IP地址、PHP怎样获得最近一个周一和上周一的日期、php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9498709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存