$ _SERVER ['REMOTE_ADDR']总是isset()吗?

时间:2011-11-18 19:02:51

标签: php mysql ip storage

我想出于某种原因在数据库中存储ip2logn($_SERVER['REMOTE_ADDR'])值。

实际上,正如我所见,$_SERVER['REMOTE_ADDR']总是有价值。任何人都可以确认它总是为任何用户设置,并且不能以任何理由设置吗?

我要问的原因是确保我应该为MySQL表中的列选择NOT NULL而不是DEFAULT NULL

所以,我可以存储ipaddress varchar(15) NOT NULL (yes, NOT null) or ip2longaddress int(11)NOT NULL,第二个选项,据我所知,是最优选的。

谢谢。

4 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:2)

即使您正在使用localhost,也始终设置

$ _ SERVER ['REMOTE_ADDR'],除非您以编程方式删除它,否则无法取消设置 如果你在INT中保存它就没有点,所以你应该把它保存为varchar

答案 2 :(得分:2)

  

任何人都可以确认它始终为任何用户设置

是肯定的。我可以。

答案 3 :(得分:-1)

$ _ SERVER变量总是设置。好吧,除非你有一些奇怪的PHP设置。