我一直在使用以下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。
这是由托管公司的设置引起的吗?
答案 0 :(得分:1)
HTTP_CLIENT_IP
和HTTP_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
)