繁体   English   中英

如何使用 PHP 获取客户端的 IP 地址和端口?

[英]How can I get the IP address and port of a client with PHP?

如何使用 PHP 获取客户端的 IP 和端口?

我尝试了下面的脚本,但它只给了我 IP 地址。

<?php print $_SERVER['REMOTE_ADDR']; ?>

要获取连接设备的端口,您可以使用$_SERVER['REMOTE_PORT']

$ipAddress = $_SERVER['REMOTE_ADDR'];
$port      = $_SERVER['REMOTE_PORT'];

获取客户端的源IP和端口

网络知识最少的人的正确答案

用解释性文字完成@marcolz 的回答。

TL;DR - echo $_SERVER['REMOTE_ADDR'] . ":" . $_SERVER['REMOTE_PORT']; echo $_SERVER['REMOTE_ADDR'] . ":" . $_SERVER['REMOTE_PORT'];

背后的含义:

每个人都应该知道,重要的是拥有关于您的客户所做的每个申请的数据,记录他们的访问数据至少五年以进行自我保护,以防发生版权法律纠纷或您的用户可能陷入的任何其他事情。

IPv4 世界由 ASN(自治系统编号)所有者和与他们共享身份的人(即所谓的最终用户)组成。

随着 IPv4 变得稀缺,大多数 ISP(互联网服务提供商)通过称为 CG-NAT(运营商级网络地址转换)的非常大和巨大的 NAT(网络地址转换)为那些没有付费的客户提供对万维网的访问足以为自己提供一个公共 IPv4 块,基本上所有最终用户的连接都是通过这个建立的,而知道发生某些事情时谁是聪明人的唯一方法是不仅要知道他们的 IP 地址,还要知道他们使用的端口请求。

如果您在应用程序上使用 PHP,您可以通过记录请求源 IP 和端口来保护自己。

为此,您可以使用以下代码:

echo $_SERVER['REMOTE_ADDR'] . ":" . $_SERVER['REMOTE_PORT'];

在这里,我们将请求源 IP 地址和端口连接起来,中间有一个冒号,回显它们以查看结果。

您可以通过在侦听 tcpdump 的同时执行请求来检查信息的真实性,如果 tcpdump 请求中使用的端口与浏览器显示的端口相同,那么一切都按预期进行。

来自异界的欢呼!

尝试这个:

if (!isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $client_ip = $_SERVER['REMOTE_ADDR'];
}
else {
    $client_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}

端口在 http 服务器中定义(Apache 或其他,主要是 80 或 443)

可以在此链接中检查 PHP $_SERVER变量。

我确信'REMOTE_ADDR'返回用户查看当前页面的 IP 地址。

但是如果你的服务器在 NAT 后面:

如果您从代理服务器后面提供服务,通过查看这些$_SERVER变量在代理后面的机器上执行的操作,您几乎肯定会节省时间。

// in place of $_SERVER['REMOTE_ADDR']
$_SERVER['HTTP_X_FORWARDED_FOR']

//  in place of $_SERVER['SERVER_NAME']
$_SERVER['HTTP_X_FORWARDED_HOST'] && $_SERVER['HTTP_X_FORWARDED_SERVER']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM