2011-08-27 197 views
2
function getIp() { 
    return "<?php echo $_SERVER['REMOTE_ADDR']; ?>"; 
} 

我想調整或重做此操作,以便某些操作只能從本地主機或我的isp服務器進行。我可以使它適用於127.0.0.1的JavaScript,但不適用於其他版本。比較IP地址

感謝任何幫助;謝謝

+3

是什麼的JavaScript與此有關呢?你應該澄清你的問題。 – Brad

+0

如果客戶端禁用JavaScript,那麼是什麼?它看起來像你試圖實現某種安全。這不是這樣。 –

+0

不要想辦法檢查':: 1'。 – glglgl

回答

5

你真的想在服務器上完成這項工作。如果你在客戶端檢查IP地址,那麼人們可以很容易地繞過這個IP地址。例如,通過使用像Firebug這樣的網絡檢查器在瀏覽器中修改代碼。

幸運的是很簡單的在服務器端做的事:

$_SERVER['REMOTE_ADDR']變量是一個簡單的字符串,所以你應該能夠使用字符串比較來檢查所需的IP地址。

例如像:

<?php 
    if ($_SERVER['REMOTE_ADDR'] == "127.0.0.1" || $_SERVER['REMOTE_ADDR'] == "1.2.3.4") { 
     echo "Show secret things here"; 
    } 
?> 
+0

謝謝大家,特別是St3fan。有用。我應該解釋我所做的不是一個軟件解決方案,而是一個使用軟件的解決方案。我主要關心的是其他部分,但在我看來,我需要做一些編碼作爲專業幫助的一種性能規格。 –

+0

問題標題是「比較IP地址」。請注意,字符串比較通常不是比較ip地址的好主意!原因是有多個字符串表示相同的IP。例如,IP「127.0.0.1」等於「127.000.000.001」,「127.00.000.1」或甚至「0:0:0:0:ffff:7f00:1」(如ipv6)命名一些。如果您知道您的IP處於某種標準化格式,則只能進行字符串比較。這可能是'$ _SERVER ['REMOTE_ADDR']'這樣做的(我沒有發現任何內容),但它也可能取決於PHP版本,操作系統等。 –

+0

爲了安全起見,最好使用'if ip2long($ _ SERVER ['REMOTE_ADDR'])=== ip2long(「127.0.0.1」))'(僅適用於ipv4)。 –