<?php
function get_client_ip() {
$ip = '';
if (isset($_SERVER['HTTP_CLIENT_IP'])) {
// 获取从客户端传递过来的真实IP地址
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
// 代理服务器可能会设置这个头信息,取第一个非unknown的IP
$ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
foreach ($ips as $ip) {
$ip = trim($ip);
if ($ip != 'unknown') {
break;
}
}
} elseif (isset($_SERVER['REMOTE_ADDR'])) {
// 直接获取客户端的IP地址
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
// 调用函数并输出客户端IP
echo get_client_ip();
?>
$_SERVER['HTTP_CLIENT_IP']
:这是客户端直接传递的真实IP地址。如果客户端通过代理服务器访问,这个值可能是空的。$_SERVER['HTTP_X_FORWARDED_FOR']
:当客户端通过代理服务器访问时,代理服务器会在请求头中添加这个字段,记录客户端的真实IP地址。我们通过分割逗号分隔的多个IP地址,找到第一个非unknown
的IP作为客户端的真实IP。$_SERVER['REMOTE_ADDR']
:这是最直接的方式,获取客户端的IP地址。如果没有经过代理服务器,这个值就是客户端的真实IP。通过这种方式,我们可以尽可能准确地获取客户端的真实IP地址。
上一篇:php 去除html标签
下一篇:php curl 上传文件
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站