首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取连接到远程桌面的客户端的ip地址

问如何获取连接到远程桌面的客户端的ip地址
EN

Stack Overflow用户
提问于 2014-03-24 18:54:50
回答 1查看 1.9K关注 0票数 1

我需要检索通过远程桌面连接到windows服务器的客户端的ip地址。

我需要可能通过php获得它。

因此客户端连接到远程桌面,并从浏览器运行客户端所连接的服务器上的php页面。

如果我运行print_r($_SERVER),我会得到:

代码语言:javascript
复制
Array (
...
[HTTP_HOST] => 10.80.3.107 //This is server ip
...
[SERVER_NAME] => 10.80.3.107 //This is server ip
[SERVER_ADDR] => 10.80.3.107 //This is server ip
[SERVER_PORT] => 80
[REMOTE_ADDR] => 10.80.3.107 //This is server ip -> I need client ip here
...
)

有什么解决方案吗?

我是否可以使用cmd获取该信息,然后使用exec从php获取该信息?

我不能使用netstat -n | find ":3389" | find "ESTABLISHED",因为它为我提供了所有连接的客户端,而不仅仅是我需要的客户端。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-03-24 19:41:02

这可以通过使用PHP的$_SERVER‘’REMOTE_ADDR‘或$_SERVER’‘REMOTE_HOST’变量来实现。

下面的两个函数等效,只是检索值的方式和位置有所不同。

在第一个使用的函数中,getenv()用于在PHP中获取环境变量的值

//使用getenv()函数获取客户端ip地址的函数

代码语言:javascript
复制
    function get_client_ipaddress() {
     $ip_address = '';
     if (getenv('HTTP_CLIENT_IP'))
         $ip_address = getenv('HTTP_CLIENT_IP');
     else if(getenv('HTTP_X_FORWARDED_FOR'))
         $ip_address = getenv('HTTP_X_FORWARDED_FOR'");
     else if(getenv('HTTP_X_FORWARDED'))
         $ip_address = getenv('HTTP_X_FORWARDED');
     else if(getenv('HTTP_FORWARDED_FOR'))
         $ip_address = getenv('HTTP_FORWARDED_FOR');
     else if(getenv('HTTP_FORWARDED'))
        $ip_address = getenv('HTTP_FORWARDED');
     else if(getenv('REMOTE_ADDR'))
         $ip_address = getenv('REMOTE_ADDR');
     else
         $ip_address = 'UNKNOWN';

     return $ip_address; 
}

不使用getenv()函数:

代码语言:javascript
复制
    function get_client_ipaddress() {
     $ip_address = '';
     if ($_SERVER['HTTP_CLIENT_IP'])
         $ip_address = $_SERVER['HTTP_CLIENT_IP'];
     else if($_SERVER['HTTP_X_FORWARDED_FOR'])
         $ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
     else if($_SERVER['HTTP_X_FORWARDED'])
         $ip_address = $_SERVER['HTTP_X_FORWARDED'];
     else if($_SERVER['HTTP_FORWARDED_FOR'])
         $ip_address = $_SERVER['HTTP_FORWARDED_FOR'];
     else if($_SERVER['HTTP_FORWARDED'])
         $ip_address = $_SERVER['HTTP_FORWARDED'];
     else if($_SERVER['REMOTE_ADDR'])
         $ip_address = $_SERVER['REMOTE_ADDR'];
     else
         $ip_address = 'UNKNOWN';

     return $ip_address; 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22607371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档