如何使用多种方式在PHP中准确获取访问者的IP地址?
- 内容介绍
- 文章标签
- 相关推荐
本文共计834个文字,预计阅读时间需要4分钟。
获取客户端IP地址的方法有多种,以下是一些常见的方法:
1. 使用 `$_SERVER['REMOTE_ADDR']` 获取原始IP地址。
2.结合 `$_SERVER['HTTP_VIA']` 和 `$_SERVER['HTTP_X_FORWARDED_FOR']` 获取可能的转发IP地址。
3.通过 `$_SERVER['HTTP_CLIENT_IP']` 获取客户端声明IP地址。
4.使用 `gethostbyaddr()` 函数将IP地址转换为域名。
5.通过网络请求API获取更详细的IP信息。
示例代码如下:
php
// 获取可能的转发IP地址$user_IP=($SERVER['HTTP_VIA']) ? $SERVER['HTTP_VIA'] : ($SERVER['HTTP_X_FORWARDED_FOR']) : $SERVER['REMOTE_ADDR'];?>
php获取客户端IP地址的几种方法 阅读php获取客户端IP地址的几种方法, <?php $iipp=$_SERVER["REMOTE_ADDR"]; echo $iipp; ?> <?php $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]; echo $user_IP; ?> <?php function get_real_ip(){ $ip=false; if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $ip = $_SERVER["HTTP_CLIENT_IP"]; } if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']); if ($ip) { array_unshift($ips, $ip); $ip = FALSE; } for ($i = 0; $i < count($ips); $i++) { if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])) { $ip = $ips[$i]; break; } } } return ($ip ? $ip : $_SERVER['REMOTE_ADDR']); } echo get_real_ip(); ?> <?php //php获取ip的算法 if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]) { $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; } elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]) { $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"]; } elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]) { $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"]; } elseif (getenv("HTTP_X_FORWARDED_FOR")) { $ip = getenv("HTTP_X_FORWARDED_FOR"); } elseif (getenv("HTTP_CLIENT_IP")) { $ip = getenv("HTTP_CLIENT_IP"); } elseif (getenv("REMOTE_ADDR")) { $ip = getenv("REMOTE_ADDR"); } else { $ip = "Unknown"; } echo "你的IP:".$ip ; ?> <?php if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR')) { $onlineip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR')) { $onlineip = getenv('REMOTE_ADDR'); } else { $onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR']; } echo $onlineip; ?> <?php function getIP() /*获取客户端IP*/ { if (@$_SERVER["HTTP_X_FORWARDED_FOR"]) $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; else if (@$_SERVER["HTTP_CLIENT_IP"]) $ip = $_SERVER["HTTP_CLIENT_IP"]; else if (@$_SERVER["REMOTE_ADDR"]) $ip = $_SERVER["REMOTE_ADDR"]; else if (@getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (@getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP"); else if (@getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR"); else $ip = "Unknown"; return $ip; } echo getip(); ?> 1:来看看代码: echo "(1)浏览当前页面的用户的 IP 地址为:"; echo $_SERVER['REMOTE_ADDR']; echo ""; echo "(2)浏览当前页面的用户的 IP 地址为:"; echo getenv('REMOTE_ADDR'); echo ""; echo "主机 www.baidu.com 的 IP 地址为:"; echo gethostbyname(www.baidu.com); 2:它的输出结果为: (1)浏览当前页面的用户的 IP 地址为:127.0.0.1 (2)浏览当前页面的用户的 IP 地址为:127.0.0.1 主机 www.baidu.com 的 IP 地址为:61.135.169.105 3:关于获取客户端的 IP 地址,有俩方法: 第一个是使用: $_SERVER['REMOTE_ADDR'] 它正在浏览当前页面用户的 IP 地址,这里的输出结果为 127.0.0.1,因为这是在本地测试,输出的是我本地的环路地址。 第俩个是使用: getenv('REMOTE_ADDR') 这里使用了函数 getenv : Gets the value of an environment variable(得到各种环境变量的值),返回值:Returns the value of the environment variable varname, or FALSE on an error(失败的话返回 FALSE). 4:关于获取服务器端的 IP 地址: gethostbyname(www.baidu.com) 这里使用了函数 gethostbyname : Get the IP address corresponding to a given Internet host name(通过给定的一个主机名字而得到它的 IP 地址),返回值:Returns the IP address of the Internet host specified by hostname or a string containing the unmodified hostname on failure(失败的话返回原样的输入字符主机名). 5:注意这里的最后一句,也就是说,如果失败的话,它会将原样输出, 例如: echo "无效主机 iwilldown 的 IP 地址为:"; echo gethostbyname("iwilldown"); 输出无效主机 iwilldown 的 IP 地址为:iwilldown 当然,这个可不是 IP 地址….~~~~
本文共计834个文字,预计阅读时间需要4分钟。
获取客户端IP地址的方法有多种,以下是一些常见的方法:
1. 使用 `$_SERVER['REMOTE_ADDR']` 获取原始IP地址。
2.结合 `$_SERVER['HTTP_VIA']` 和 `$_SERVER['HTTP_X_FORWARDED_FOR']` 获取可能的转发IP地址。
3.通过 `$_SERVER['HTTP_CLIENT_IP']` 获取客户端声明IP地址。
4.使用 `gethostbyaddr()` 函数将IP地址转换为域名。
5.通过网络请求API获取更详细的IP信息。
示例代码如下:
php
// 获取可能的转发IP地址$user_IP=($SERVER['HTTP_VIA']) ? $SERVER['HTTP_VIA'] : ($SERVER['HTTP_X_FORWARDED_FOR']) : $SERVER['REMOTE_ADDR'];?>
php获取客户端IP地址的几种方法 阅读php获取客户端IP地址的几种方法, <?php $iipp=$_SERVER["REMOTE_ADDR"]; echo $iipp; ?> <?php $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]; echo $user_IP; ?> <?php function get_real_ip(){ $ip=false; if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $ip = $_SERVER["HTTP_CLIENT_IP"]; } if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']); if ($ip) { array_unshift($ips, $ip); $ip = FALSE; } for ($i = 0; $i < count($ips); $i++) { if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])) { $ip = $ips[$i]; break; } } } return ($ip ? $ip : $_SERVER['REMOTE_ADDR']); } echo get_real_ip(); ?> <?php //php获取ip的算法 if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]) { $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; } elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]) { $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"]; } elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]) { $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"]; } elseif (getenv("HTTP_X_FORWARDED_FOR")) { $ip = getenv("HTTP_X_FORWARDED_FOR"); } elseif (getenv("HTTP_CLIENT_IP")) { $ip = getenv("HTTP_CLIENT_IP"); } elseif (getenv("REMOTE_ADDR")) { $ip = getenv("REMOTE_ADDR"); } else { $ip = "Unknown"; } echo "你的IP:".$ip ; ?> <?php if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR')) { $onlineip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR')) { $onlineip = getenv('REMOTE_ADDR'); } else { $onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR']; } echo $onlineip; ?> <?php function getIP() /*获取客户端IP*/ { if (@$_SERVER["HTTP_X_FORWARDED_FOR"]) $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; else if (@$_SERVER["HTTP_CLIENT_IP"]) $ip = $_SERVER["HTTP_CLIENT_IP"]; else if (@$_SERVER["REMOTE_ADDR"]) $ip = $_SERVER["REMOTE_ADDR"]; else if (@getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (@getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP"); else if (@getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR"); else $ip = "Unknown"; return $ip; } echo getip(); ?> 1:来看看代码: echo "(1)浏览当前页面的用户的 IP 地址为:"; echo $_SERVER['REMOTE_ADDR']; echo ""; echo "(2)浏览当前页面的用户的 IP 地址为:"; echo getenv('REMOTE_ADDR'); echo ""; echo "主机 www.baidu.com 的 IP 地址为:"; echo gethostbyname(www.baidu.com); 2:它的输出结果为: (1)浏览当前页面的用户的 IP 地址为:127.0.0.1 (2)浏览当前页面的用户的 IP 地址为:127.0.0.1 主机 www.baidu.com 的 IP 地址为:61.135.169.105 3:关于获取客户端的 IP 地址,有俩方法: 第一个是使用: $_SERVER['REMOTE_ADDR'] 它正在浏览当前页面用户的 IP 地址,这里的输出结果为 127.0.0.1,因为这是在本地测试,输出的是我本地的环路地址。 第俩个是使用: getenv('REMOTE_ADDR') 这里使用了函数 getenv : Gets the value of an environment variable(得到各种环境变量的值),返回值:Returns the value of the environment variable varname, or FALSE on an error(失败的话返回 FALSE). 4:关于获取服务器端的 IP 地址: gethostbyname(www.baidu.com) 这里使用了函数 gethostbyname : Get the IP address corresponding to a given Internet host name(通过给定的一个主机名字而得到它的 IP 地址),返回值:Returns the IP address of the Internet host specified by hostname or a string containing the unmodified hostname on failure(失败的话返回原样的输入字符主机名). 5:注意这里的最后一句,也就是说,如果失败的话,它会将原样输出, 例如: echo "无效主机 iwilldown 的 IP 地址为:"; echo gethostbyname("iwilldown"); 输出无效主机 iwilldown 的 IP 地址为:iwilldown 当然,这个可不是 IP 地址….~~~~

