How do I get my syste开发者_运维问答m's IP address?
I am using $ip_address=$_SERVER[REMOTE_ADDR];
, but it returns my localhost IP address instead of my system's IP address.
If you are accessing a local server, then your local IP address is the remote IP. PHP is giving you the correct response.
If you want to know your IP address to the rest of the internet, go to Google and type "what is my ip".
$_SERVER['SERVER_ADDR']
See the php docs for a full list of stuff you might find in the $_SERVER
superglobal.
This function will determine the real IP address:
function ipCheck() {
if (getenv('HTTP_CLIENT_IP')) {
$ip = getenv('HTTP_CLIENT_IP');
}
elseif (getenv('HTTP_X_FORWARDED_FOR')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
}
elseif (getenv('HTTP_X_FORWARDED')) {
$ip = getenv('HTTP_X_FORWARDED');
}
elseif (getenv('HTTP_FORWARDED_FOR')) {
$ip = getenv('HTTP_FORWARDED_FOR');
}
elseif (getenv('HTTP_FORWARDED')) {
$ip = getenv('HTTP_FORWARDED');
}
else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
A late reply but I hope it still might be able to help someone. I needed system ip for a project so I quickly scrapped up a custom function using regular expressions. It works on ubuntu linux (and technically should work on any distro/version of linux).
function getLocalIp(){
$output = shell_exec('/sbin/ifconfig');
preg_match("/inet?[[:space:]]?addr:([0-9.]+)/", $output, $matches);
if(isset($matches[1]))
$ip = $matches[1];
else
$ip = 0;
return $ip;
}
It requires:
- making a system call using shell_exec.
- using regular expressions to find the value of internal ip address.
If you happen to create something similar for windows or improve the functionality of this function, please share your code with the rest of us.
精彩评论