2012-11-30 63 views
0

這裏是我設置我的會話變量。

function validateUser() 
{ 
session_regenerate_id(); //this is a security measure 
$_SESSION['user'] = $_POST['username']; 
$_SESSION['valid'] = 1; 
$_SESSION['firstname'] = $firstname; 
$_SESSION['lastname'] = $lastname; 
} 

這就是print_r($ _SESSSION)回聲。

Array ([user] => aboshart [valid] => 1 [firstname] => [lastname] =>) 

如果我回顯$ firstname和$ lastname,我會得到正確的值。我究竟做錯了什麼?

+0

$ _SESSION瓦爾通常被認爲是可信的。您正在通過不清理或驗證$ _POST ['username']將$ _SESSION var設置爲unsanitized user提供的var。請在不小心使用$ _SESSION ['user']之前,在可能導致數據庫查詢中受到傷害的地方進行此操作。我假設你想從你的PHP代碼評論判斷一個安全的應用程序。 –

回答

3

您沒有向函數傳遞$ firstname或$ lastname。

function validateUser($firstname, $lastname) 
{ 
    session_regenerate_id(); //this is a security measure 
    $_SESSION['user'] = $_POST['username']; 
    $_SESSION['valid'] = 1; 
    $_SESSION['firstname'] = $firstname; 
    $_SESSION['lastname'] = $lastname; 
} 

$ _ POST和$ _SESSION應該是範圍之內,但因爲它是誰指定值是什麼樣的數據開發的其他人不

+0

他說什麼;另外,通常還要查看錯誤日誌中的通知和警告。 – Gutza

+0

謝謝!這正是我需要的。 $ _POST變量只是爲了證明validateUser函數正在設置會話變量。我不會在實時代碼中使用它。 – slinkfresh