View Full Version : IP address issue
siraxi
Aug 8th 2006, 10:14 pm
Hi
I use to determine visitors address with $ipaddress = $_SERVER['REMOTE_ADDR'];
But lately when viewing my own IP address as displayed by this variable I'm getting the IP of Google - pertaining to a Mountain View, CA location. How can this be? I am quite far from California...
Would you recommend using another expression in order to get the real IP?
coderlinks
Aug 9th 2006, 12:26 am
Cool... that means only one thing... You are working for Google ;) :D
Thomas
siraxi
Aug 9th 2006, 12:45 am
Yeah, I wish!
Could Googlebot be the cause? Weird.
kingofdollars
Aug 9th 2006, 2:36 am
could be due to proxy?
Cryogenius
Aug 9th 2006, 5:51 am
Are you using Google Web Accelerator (http://webaccelerator.google.com/)?
If you are going through a proxy, then maybe the original user IP address is stored somewhere in the HTTP headers. Make a call to apache_request_headers(), and have a rummage in the array that gets returned.
Cryo.
clancey
Aug 9th 2006, 10:27 am
I have been using this function:
function get_client_ip() {
if (isset ($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipAddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else
$ipAddress = $_SERVER['REMOTE_ADDR'];
return $ipAddress;
}
Maybe it will help.
siraxi
Aug 9th 2006, 12:04 pm
Oh, yes, that's it: I actually am using Google Web Accelerator! This must be the explanation. Many thanks.
And I'll use the suggested function. Many thanks too.
webviz
Aug 9th 2006, 9:36 pm
<?php
function get_real_ip()
{
// No IP found (will be overwritten by for
// if any IP is found behind a firewall)
$ip = FALSE;
// If HTTP_CLIENT_IP is set, then give it priority
if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
// User is behind a proxy and check that we discard RFC1918 IP addresses
// if they are behind a proxy then only figure out which IP belongs to the
// user. Might not need any more hackin if there is a squid reverse proxy
// infront of apache.
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
// Put the IP's into an array which we shall work with shortly.
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
// Skip RFC 1918 IP's 10.0.0.0/8, 172.16.0.0/12 and
// 192.168.0.0/16 -- jim kill me later with my regexp pattern
// below.
if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])) {
if (version_compare(phpversion(), "5.0.0", ">=")) {
if (ip2long($ips[$i]) != false) {
$ip = $ips[$i];
break;
}
} else {
if (ip2long($ips[$i]) != -1) {
$ip = $ips[$i];
break;
}
}
}
}
}
// Return with the found IP or the remote address
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
?>
If you find my stuff helpful, give me good rep... NOW! ;)
vBulletin® v3.8.4, Copyright ©2000-2009, Jelsoft Enterprises Ltd.