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


How to get ip address of client connected to remote desktop

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

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

客户端连接到远程桌面,并从浏览器运行一个php页面,该页面位于客户端连接的服务器上。

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

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来获取该信息,然后从PHP使用exec?

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

谢谢!

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

下面的两个函数是等价的,不同之处在于如何和从哪里检索值。

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

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

    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()函数:

    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; 
}