2011-11-18 81 views
10

由于某种原因,我想在db中存储ip2logn($_SERVER['REMOTE_ADDR'])值。

实际上,正如我所看到的,$_SERVER['REMOTE_ADDR']总是有一个值。任何人都可以确认它始终为任何用户设置,并且不能由任何原因设置?

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

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

谢谢。

+0

ip2long不适用于IPv6地址,所以最好在数据库中有空值选项。 –

回答

14

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

2

$ _SERVER ['REMOTE_ADDR']始终设置,即使您在本地主机上工作,除非您以编程方式将其删除,否则无法取消设置 如果您将其保存在INT中,则不会出现任何点,因此您应该保存它为varchar

2

任何人可以证实它总是对任何用户

是设置。我可以。

-1

$ _SERVER变量总是被设置。那么,除非你有一些奇怪的PHP设置。

+0

不要说所有的变数。 -1如果我可以 –

+0

请解释欧比万... – frustratedtech

+1

@David:在CLI模式下运行时,没有设置'REQUEST_URI'。 $ _SERVER本身总是存在,但其内容完全取决于操作环境。 –

相关问题