Reputation: 3670
I need to get Public IP address of the system using PHP. I tried the following function:
function get_server_ip() {
$ipaddress = '';
if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
return $ipaddress;
}
But, I got only the localhost IP 127.0.0.1
. I am in need of the server's public IP address. What function is available in PHP to get my public IP address which I get from this site: http://www.whatismyip.com/
Upvotes: 2
Views: 26076
Reputation: 1503
It is not possible to get Your IP address on that way if you run web server on same machine or local LAN where you run your browser client, you will always get local IP address.
If You still want to get Your public address from PHP script, on *nix servers which runs in same network as your browser client, you can get it via command like this:
$myPublicIP = trim(shell_exec("dig +short myip.opendns.com @resolver1.opendns.com"));
echo "My public IP: ".$myPublicIP;
Upvotes: 14