在php中使用file_get_content()时,如何设置ip地址



我正在使用file_get_content((从外部url打开一个文件。但当我这样做的时候url请求ip被设置为服务器ip,而不是客户端ip。有什么办法解决这个问题吗?

我通过测试以下代码发现了这一点。

<?php
$ip = $_SERVER['REMOTE_ADDR'];
// Create a stream
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"HTTP_CLIENT_IP: $ip" .
"remote_addr: $ip".
"server_addr: $ip".
"Cookie: foo=barrn",
)
);
$context = stream_context_create($opts);
// Open the file using the HTTP headers set above
$file = file_get_contents('http://ifconfig.me/ip', false, $context);
var_dump($file);

输出:字符串(10(";153.92.0.6";(这是我的域名ip(我想要的输出是客户端ip,而不是域ip

url请求ip被设置为服务器ip,而不是客户端ip。

是的。请求的来源。

有什么方法可以解决这个问题吗?

改为从客户端发出请求。例如使用Ajax。预计同源政策会成为阻碍。


如果你的目标是获得客户端的IP地址,那么$_SERVER['REMOTE_ADDR']已经拥有了,你不需要去外部服务。

相关内容

最新更新