2011-11-18 82 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本身總是存在,但其內容完全取決於操作環境。 –

相關問題