这是获得IP的更好方法

Sac*_*dra 4 php ip-address fetch

在PHP中获取IP地址的更好方法是什么:

getenv('REMOTE_ADDR'); 
Run Code Online (Sandbox Code Playgroud)

要么,

$_SERVER['REMOTE_ADDR'];
Run Code Online (Sandbox Code Playgroud)

请告诉我两者之间的区别,如果有的话.

Bjö*_*örn 11

$ _SERVER是一个内置的PHP变量,而getenv()向环境(可能是Apache/IIS)询问值.

获得IP的最佳方式是:

$ip = (!empty($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : getenv('REMOTE_ADDR');
Run Code Online (Sandbox Code Playgroud)

但我怀疑这两个变量之间有什么区别......嗯.

  • 对于那些使用PHP的内置Web服务器(php -S localhost ..),getenv()可以为空,而$ _SERVER将具有正确的结果. (2认同)

rek*_*o_t 3

getenv() 可用于访问任何环境变量(PHP 只是将 REMOTE_ADDR 注册为脚本的环境变量),而使用 $_SERVER 显然只能访问 $_SERVER 超全局的内容。

常见的方法是使用 $_SERVER 来实现此目的,尽管它在功能上并没有真正产生区别。