problem with $_SERVER['REMOTE_ADDR']

前端 未结 3 2044
情话喂你
情话喂你 2021-01-16 11:56

i used $_SERVER[\'REMOTE_ADDR\'] and it returns client ip address (IP address from which the user is viewing the current page) but at now (and same code) it returns host ip

相关标签:
3条回答
  • 2021-01-16 11:58

    I have to mention that the array key is case-sensitive, and should be upper-case:

    var_dump($_SERVER['remote_addr']);
    echo "\n";
    var_dump($_SERVER['REMOTE_ADDR']);
    

    Output:

    Notice: Undefined index: remote_addr in /home/adam/public_html/2011/01/04/foo.php on line 3
    NULL
    
    string(15) "10.0.1.51"
    

    I would var_dump($_SERVER) just to evaluate the state of your world, and go from there.

    0 讨论(0)
  • 2021-01-16 12:03

    You should query for HTTP_X_FORWARDED_FOR first and if it isn't assigned use REMOTE_ADDR.

    0 讨论(0)
  • 2021-01-16 12:22

    @James @imez

    By default the client IP is in $_SERVER['REMOTE_ADDR']. When the user enters your site using a PROXY server (HTTP gateway) it tells you who it's proxing for (HTTP_X_FORWARDED_FOR) and will give it's own Proxy IP in $_SERVER['REMOTE_ADDR'].

    Anonymous proxies will omit HTTP_X_FORWARDED_FOR or simply lie to you.

    Knowing you have a real client IP isn't possible.

    0 讨论(0)
提交回复
热议问题