[英]Different browsers, different IPs?
我通過在MySQL數據庫中保存$_SERVER['REMOTE_ADDR']
的值來保存用戶的IP地址。 問題是對於Firefox和Chrome $_SERVER['REMOTE_ADDR']
是::1
(表示IPv6中的 localhost),IE和Opera是127.0.0.1
( IPv4 )。
所以,我的問題是
IP版本是否依賴於瀏覽器? (我以前認為它取決於計算機)
我應該在數據庫中創建兩個字段,一個用於IPv4地址,一個用於IPv6地址?
我應該將所有IP統一到IPv6嗎? 我怎樣才能在PHP中實現這一點(如果可能的話)?
相當明顯 - 你的盒子支持IPv6,Firefox / Chrome只要有可用就使用IPv6,而IE和Opera則不支持(或者它是默認的默認設置)。
將地址存儲在足以容納IPv6地址的字符串中。
不,因為在一般情況下你不能。
使用PHP函數inet_pton
將人類可讀的IP地址轉換為其壓縮表示形式。 然后,您可以將每個IP地址存儲在數據庫的BINARY(16)
或VARBINARY(16)
字段中。
瀏覽器將使用任何可用的內容。 這可以是IPv4或IPv6,甚至可以在會話期間更改。 最重要的是,請記住,主機可以擁有許多IPv6地址,因此它也可能在會話期間發生變化。
簡而言之:不要太依賴REMOTE_ADDR的值:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.