Php $服务器[';远程地址';]是否始终是isset()?

Php $服务器[';远程地址';]是否始终是isset()?,php,mysql,ip,storage,Php,Mysql,Ip,Storage,出于某种原因,我想在数据库中存储ip2logn($\u SERVER['REMOTE\u ADDR'])值 实际上,正如我所看到的,$\u服务器['REMOTE\u ADDR']总是有一个值。是否有人可以确认它总是为任何用户设置的,并且由于任何原因都不能设置 我问它的原因是为了确保我应该为MySQL表中的列选择notnull,而不是defaultnull 因此,我可以存储ipaddressvarchar(15)NOT NULL(是,NOT NULL)或ip2longaddressint(11)N

出于某种原因,我想在数据库中存储
ip2logn($\u SERVER['REMOTE\u ADDR'])

实际上,正如我所看到的,
$\u服务器['REMOTE\u ADDR']
总是有一个值。是否有人可以确认它总是为任何用户设置的,并且由于任何原因都不能设置

我问它的原因是为了确保我应该为MySQL表中的列选择
notnull
,而不是
defaultnull

因此,我可以存储ipaddress
varchar(15)NOT NULL(是,NOT NULL)或ip2longaddress
int(11)NOT NULL,据我所知,第二个选项是最可取的


谢谢。

$\u服务器['REMOTE\u ADDR']始终处于设置状态,即使您正在本地主机上工作,也无法取消设置,除非您以编程方式将其删除
如果以INT格式保存,则不会有点,因此应将其保存为varchar

$\u始终设置服务器变量。好吧,除非您有一些奇怪的php设置。

只有在通过Web服务器运行脚本时才会设置它。如果您在CLI(命令行)模式下运行PHP,则不会设置REMOTE_ADDR,因为命令行脚本没有远程地址。

ip2long对IPv6地址不起作用,因此最好在数据库中为空值设置一个选项。>是否有人确认它始终为任何用户设置?是的。我可以。不要说所有的Var-1如果我could@David例如,在CLI模式下运行时,未设置请求URI$_服务器本身始终存在,但其内容完全取决于操作环境。所有HTTP_*vars都是基于请求头设置的,其中任何一个都可以不存在。还有一些取决于服务器设置。当我运行测试时,
$\u server['REMOTE\u ADDR']
isset()
”,但带有
null
。我认为没有必要用
isset()