2013-05-12 99 views
-3

我使用會話來跟蹤用戶的方式。 在另一個頁面上,當用戶登錄然後重定向到這個頁面時,它設置用戶名和密碼變量。會話不工作應該

出於安全考慮,當用戶來到這裏我要檢查該用戶登錄。如果用戶沒有登錄,然後將用戶重定向到index.php頁面

<?php 

    session_start(); 
    if(isset($_SESSION['sessionid'])) { 
if (isset ($_SESSION['username' and 'password'])){ 
} 
else 
{ 
    header("Location:Index.php"); 
} 
    } 
?> 

問題是,如果我只是在相關輸入網址加載網頁我不是重定向到索引頁

任何幫助表示讚賞

+0

你認真地存儲在會話中的密碼與用戶名一起? – 2013-05-12 17:32:14

回答

1

我會強烈建議對存儲在會話中的信息。話雖這麼說,你在你的語法錯誤:

if (isset ($_SESSION['username']) && isset ($_SESSION['password'])) {...} 

但是,如果我能進一步增加,我會建議(在最低限度)創建一個類或函數來爲你做這個,因爲你」我會更多地使用它。

創建自己的功能,例如:

function is_logged_in() { 
    if ((isset ($_SESSION['username'])) && (isset ($_SESSION['password']))) { 
    /* this is an awful way of checking if a user is logged in! */ 
    return true; 
    } else { 
    return false; 
    } 
} 

然後,當你需要檢查是否有用戶登錄,只是引用該函數:

if (is_logged_in()) { 
    /* show members only stuff */ 
} else { 
    echo 'Please login'; 
} 

然後,當你學習更多,並繼續您的應用程序,您可以調整一個功能,而不必回過頭來,並更新代碼中的任何地方的登錄檢查。

但是:請,請,請用戶安全閱讀起來,甚至更好的使用許多預先製作的包之一。

乾杯。

+0

感謝這個:)這是我的任務設計已經在不久將移交,所以我沒有時間,使網站100%的安全,內容管理系統的一部分,但它很可能我會做類似的事情對於我下一學年的最後一年項目,所以我會記住這一點,謝謝:) 我打算把這個整個劇本包括在某個點:) 首先我想實際得到後端我。e CMS的一部分,我必須爲我的任務做,然後再觸及它:) – 2013-05-12 18:12:27

+0

很酷。祝你的項目好運。樂意效勞。 – 2013-05-12 19:54:39

1

這是檢查在使用if語句這個

的錯誤方式
if (isset($_SESSION['username']) && isset($_SESSION[ 'password'])) 
0

您的if條件sintax錯誤,你需要separatly聲明會話值,從而改變這個

if((isset($_SESSION['username'])) && (isset($_SESSION['password']))) { 
1

隨着isset ($_SESSION['username' and 'password'])你不檢查是否兩個變量$_SESSION['username']$_SESSION['password']存在,但$_SESSION變量與關鍵'username' and 'password'(計算結果爲true)是否存在,所以基本上isset($_SESSION[true])

實際上,你需要列出兩個變量:

isset($_SESSION['username'], $_SESSION['password'])