Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP获取客户端的IP地址和端口?_Php_Ip_Client_Port - Fatal编程技术网

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

如何使用PHP获取客户端的IP地址和端口?,php,ip,client,port,Php,Ip,Client,Port,如何使用PHP获取客户端的IP和端口 我尝试了下面的脚本,但它只给了我IP地址 <?php print $_SERVER['REMOTE_ADDR']; ?> 端口在http服务器中定义(Apache或其他,主要是80或443) PHP$\u服务器变量可以在此处进行检查 我确信'REMOTE\u ADDR'返回用户查看当前页面的IP地址 但如果您的服务器在NAT之后: 如果您是在代理服务器后面提供服务,您几乎可以肯定地通过查看这些$\u服务器变量在代理服务器后面的机器上所做的工作来

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

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

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

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

PHP
$\u服务器
变量可以在此处进行检查

我确信
'REMOTE\u ADDR'
返回用户查看当前页面的IP地址

但如果您的服务器在NAT之后:

如果您是在代理服务器后面提供服务,您几乎可以肯定地通过查看这些
$\u服务器
变量在代理服务器后面的机器上所做的工作来节省时间


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

PHP
$\u服务器
变量可以在此处进行检查

我确信
'REMOTE\u ADDR'
返回用户查看当前页面的IP地址

但如果您的服务器在NAT之后:

如果您是在代理服务器后面提供服务,您几乎可以肯定地通过查看这些
$\u服务器
变量在代理服务器后面的机器上所做的工作来节省时间


要获取所连接设备的端口,您可以使用
$\u服务器['REMOTE\u port']

$ipAddress=$\u服务器['REMOTE\u ADDR'];
$port=$\服务器['REMOTE\ u端口];

要获取所连接设备的端口,您可以使用
$\u服务器['REMOTE\u port']

$ipAddress=$\u服务器['REMOTE\u ADDR'];
$port=$\服务器['REMOTE\ u端口];
获取客户端的原始IP和端口 对于那些缺乏网络知识的人来说,这是正确的答案 用解释性文本完成@marcolz的回答。

TL;DR-
echo$\u服务器['REMOTE\u ADDR']。":" . $_服务器['REMOTE_PORT']

其背后的含义是: 每个人都应该知道,重要的是要有你的客户所做的每一次申请的数据,记录他们至少五年的访问数据,以便在版权或你的用户可能卷入的任何其他法律纠纷的情况下进行自我保护

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

由于IPv4已经变得稀缺,大多数ISP(互联网服务提供商)通过称为CG-NAT(运营商级网络地址转换)的非常大的NAT(网络地址转换)为那些自己支付的费用不足以支付一个公共IPv4区块的客户提供对万维网的访问,基本上,所有最终用户的连接都是通过此连接进行的,当发生某些事情时,要知道谁是SmartPass的唯一方法是不仅要知道他们的IP地址,还要知道他们在请求时使用的端口

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

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

echo$\u服务器['REMOTE\u ADDR']。":" . $_服务器['REMOTE_PORT'];

这里,我们用中间的冒号将请求源IP地址和端口连接起来,回放它们,以便看到结果。

您可以在侦听tcpdump时执行请求来检查信息的准确性,如果tcpdump上的请求中使用的端口与浏览器显示的端口相同,则一切正常

外面世界的欢呼声

获取客户端的源IP和端口 对于那些缺乏网络知识的人来说,这是正确的答案 用解释性文本完成@marcolz的回答。

TL;DR-
echo$\u服务器['REMOTE\u ADDR']。":" . $_服务器['REMOTE_PORT']

其背后的含义是: 每个人都应该知道,重要的是要有你的客户所做的每一次申请的数据,记录他们至少五年的访问数据,以便在版权或你的用户可能卷入的任何其他法律纠纷的情况下进行自我保护

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

由于IPv4已经变得稀缺,大多数ISP(互联网服务提供商)通过称为CG-NAT(运营商级网络地址转换)的非常大的NAT(网络地址转换)为那些自己支付的费用不足以支付一个公共IPv4区块的客户提供对万维网的访问,基本上,所有最终用户的连接都是通过此连接进行的,当发生某些事情时,要知道谁是SmartPass的唯一方法是不仅要知道他们的IP地址,还要知道他们在请求时使用的端口

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

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

echo$\u服务器['REMOTE\u ADDR']。":" . $_服务器['REMOTE_PORT'];

这里,我们用中间的冒号将请求源IP地址和端口连接起来,回放它们,以便看到结果。

您可以在侦听tcpdump时执行请求来检查信息的准确性,如果tcpdump上的请求中使用的端口与浏览器显示的端口相同,则一切正常


外面世界的欢呼声

端口可能是80。为什么您关心客户端希望在哪个端口上响应?…而REMOTE_ADDR仅显示与客户端ip相同的服务器ip。为什么要回答这个问题而不提出无意义的问题如此困难<代码>echo$_服务器['REMOTE\u ADDR']。”:“$_服务器['REMOTE\u PORT']注意:几乎每个请求都会更改客户端端口,因此实际上没有任何意义,必须经常跟踪itRemote端口,以便NAT后面的客户端记录身份。这是法律问题,可能是政府要求的。端口可能是80。为什么您关心客户希望在哪个端口得到响应?…
// 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']