How to get the my system's IP address

2020-02-15 21:56发布

How do I get my system'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.

标签: php ip
4条回答
家丑人穷心不美
2楼-- · 2020-02-15 22:35

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;
}
查看更多
3楼-- · 2020-02-15 22:44

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".

查看更多
兄弟一词,经得起流年.
4楼-- · 2020-02-15 22:48

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.

查看更多
Deceive 欺骗
5楼-- · 2020-02-15 22:58

$_SERVER['SERVER_ADDR']

See the php docs for a full list of stuff you might find in the $_SERVER superglobal.

查看更多
登录 后发表回答