PHP总是返回相同的IP

时间:2019-05-17 04:40:09

标签: php ip-address

我一直在使用以下PHP代码记录IP:

getenv('HTTP_CLIENT_IP') ?: getenv('HTTP_X_FORWARDED_FOR') ?: getenv('REMOTE_ADDR')

一切正常。但是从今年5月开始,我注意到所有记录的IP都是74.220.219.56。我还通过使用VPN和更改国家(地区)对它进行了测试,问题仍然存在。现在,我仅需使用getenv('REMOTE_ADDR')即可获得正确的IP。

这是由托管公司的设置引起的吗?

2 个答案:

答案 0 :(得分:1)

HTTP_CLIENT_IPHTTP_X_FORWARDED_FOR都是非标准的HTTP标头,并且必须由代理服务器设置。如果您的托管公司的PHP应用程序前面有一个代理,则他们需要启用这些标头才能使其正常工作。

此外,如果您完全确定托管服务提供商会使用这些标头,则应该只阅读其中的任何一个IP标头。如果您不确定,则可能是安全问题。

因此,简而言之,这些标头中的任何一个是否完全取决于您的托管人,并且您不应该使用这两个标头中的任何一个,直到确定托管人是否支持它们为止。

答案 1 :(得分:1)

如果您正在使用PHP网站应用程序,则可以通过超级全局服务器变量检查用户IP。

$ip = $_SERVER["REMOTE_ADDR"];

如果在$ _SERVER变量上调用print_r函数,将看到有关服务器的相关信息。这里是本地服务器(沼泽)

Array
(
    [HTTP_HOST] => localhost:8080
    [HTTP_CONNECTION] => keep-alive
    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    [HTTP_ACCEPT_ENCODING] => gzip, deflate, br
    [HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.9
    [HTTP_COOKIE] => PHPSESSID=f1m56d9il08q2no5trdvdb4us1; _ga=GA1.1.1485216858.1538653842; user_ip=%3A%3A1; th_active_theme=USD; wordpress_test_cookie=WP+Cookie+check
    [PATH] => C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\;C:\wamp64\bin\php\php5.6.25;C:\Program Files\Git\cmd;C:\WINDOWS\System32\OpenSSH\;C:\composer;C:\Program Files\PuTTY\;C:\Program Files\nodejs\;C:\WINDOWS\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps
    [SystemRoot] => C:\WINDOWS
    [COMSPEC] => C:\WINDOWS\system32\cmd.exe
    [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
    [WINDIR] => C:\WINDOWS
    [SERVER_SIGNATURE] => 
Apache/2.4.23 (Win64) PHP/7.0.10 Server at localhost Port 8080


    [SERVER_SOFTWARE] => Apache/2.4.23 (Win64) PHP/7.0.10
    [SERVER_NAME] => localhost
    [SERVER_ADDR] => ::1
    [SERVER_PORT] => 8080
    [REMOTE_ADDR] => ::1
    [DOCUMENT_ROOT] => C:/wamp64/www
    [REQUEST_SCHEME] => http
    [CONTEXT_PREFIX] => 
    [CONTEXT_DOCUMENT_ROOT] => C:/wamp64/www
    [SERVER_ADMIN] => wampserver@wampserver.invalid
    [SCRIPT_FILENAME] => C:/wamp64/www/test/index.php
    [REMOTE_PORT] => 60364
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => 
    [REQUEST_URI] => /test/
    [SCRIPT_NAME] => /test/index.php
    [PHP_SELF] => /test/index.php
    [REQUEST_TIME_FLOAT] => 1558071651.052
    [REQUEST_TIME] => 1558071651
)