Powered by Typecho)))
Optimized by EAimTY
function getip() {
if (isset($_SERVER)) {
if (isset($_SERVER[HTTP_X_FORWARDED_FOR])) {
$realip = $_SERVER[HTTP_X_FORWARDED_FOR];
} elseif (isset($_SERVER[HTTP_CLIENT_IP])) {
$realip = $_SERVER[HTTP_CLIENT_IP];
} else {
$realip = $_SERVER[REMOTE_ADDR];
}
} else {
if (getenv(”HTTP_X_FORWARDED_FOR”)) {
$realip = getenv( “HTTP_X_FORWARDED_FOR”);
} elseif (getenv(”HTTP_CLIENT_IP”)) {
$realip = getenv(”HTTP_CLIENT_IP”);
} else {
$realip = getenv(”REMOTE_ADDR”);
}
}
return $realip;
2th:
1. function getip() {
2. if (isset($_SERVER)) {
3. /*在局域网通过透明代理访问外部的web服务器时,
*在web服务器端,
*通过header HTTP_X_FORWARDED_FOR 可以知道代理服务器的服务器名以及端口,
*/
4. if (isset($_SERVER[HTTP_X_FORWARDED_FOR])) {
5. $realip = $_SERVER[HTTP_X_FORWARDED_FOR];
6. } elseif (isset($_SERVER[HTTP_CLIENT_IP])) {
7. $realip = $_SERVER[HTTP_CLIENT_IP];
8. } else {
9. $realip = $_SERVER[REMOTE_ADDR];
10. }
11. } else {
12. /*string getenv ( string varname )*Returns the value of the environment variable varname, or FALSE on *an error.
13. */
14. if (getenv(“HTTP_X_FORWARDED_FOR”)) {
15. $realip = getenv( “HTTP_X_FORWARDED_FOR”);
16. } elseif (getenv(“HTTP_CLIENT_IP”)) {
17. $realip = getenv(“HTTP_CLIENT_IP”);
18. } else {
19. $realip = getenv(“REMOTE_ADDR”);
20. }
21. }
22. return $realip;
HTTP_X_FORWARDED_FOR获取的是最真实的,“HTTP_X_FORWARDED_FOR”是HTTP协议头中的一部分,也就是说客户端可以伪造,使用时需要进行相应检测防止被利用,例如网站有封IP的功能,恶意用户可以伪造IP,使网站误封正常用户的IP。