尽管使用代理,仍检索真实访客 IP 地址
通常用于获取访客 IP 地址的 PHP 代码是:
<code class="php"><?php echo $_SERVER['REMOTE_ADDR']; ?></code>
但是,当代理运行时,此方法无法捕获真实IP。为了寻求此问题的解决方案,让我们深入研究替代方法。
用于 IP 确定的自定义 PHP 函数
考虑到 CloudFlare 连接,提供的 PHP 代码提供了全面的解决方案以及各种其他因素:
<code class="php">function getUserIP() { // Handle CloudFlare connections if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) { $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"]; $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"]; } $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = $_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP)) { $ip = $client; } elseif(filter_var($forward, FILTER_VALIDATE_IP)) { $ip = $forward; } else { $ip = $remote; } return $ip; } $user_ip = getUserIP();</code>
此代码将 IP 地址分配给变量 $user_ip,然后可以根据需要在 PHP 脚本中使用该变量。
以上是使用代理时如何获取真实访客IP地址?的详细内容。更多信息请关注PHP中文网其他相关文章!