2012-12-19 62 views
5

我試圖加強我的會話,並找到下面的代碼。我的問題是這條線isset($_SESSION['last_ip']) !== $_SERVER['REMOTE_ADDR']加強php會話 - 比較錯誤

當我回顯比較IP數字是相同的,但代碼行比較兩者是不同的。如果我把它比作!=那麼比較起作用。這是爲什麼?兩個值不應該完全相同嗎?任何建議如何解決它,所以他們是===

ini_set('session.cookie_httponly', true); 
session_start(); 
if (isset($_SESSION['last_ip']) === false) { 
    $_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR']; 
} 
if (isset($_SESSION['last_ip']) !== $_SERVER['REMOTE_ADDR']) { 
    echo $_SESSION['last_ip'] . '/' . $_SERVER['REMOTE_ADDR']; // the output is identical 
} 
+0

是否以任何方式操縱$ _SESSION ['last_ip']?像添加斜槓或額外的空白? –

+0

@PRPGFerret否,其完全如圖所示。 (更新了問題) –

+0

如果比較有效,那麼必須有一些差異,但是相同的不是。也許嘗試修剪兩個值? –

回答

11
if (isset($_SESSION['last_ip']) !== $_SERVER['REMOTE_ADDR']) { 

你檢查,以查看是否有設置和其他匹配布爾值。刪除isset

2

就個人而言,我會用和運營商的IF序列解決這個如:

if (isset($_SESSION['last_ip']) && $_SESSIOn['last_ip'] != $_SERVER['REMOTE_ADDR']) { 

這是否幫助?

+0

isset($ _ SESSION ['last_ip'])&& $ _SESSIOn ['last_ip']!= $ _SERVER ['REMOTE_ADDR']'這是說,如果會話last_ip不存在,比較不會發生? –