2015-01-08 89 views
1
session_start(); 

if (isset($_POST['username'] , $_POST['password'])) { 

    $extractabout = $db->prepare("SELECT * FROM user WHERE username = :username && password = :password"); 

    $extractabout->execute([ 
     'username' => $_POST['username'], 
     'password' => $_POST['password'] 
    ]); 

    $infos = $extractabout->rowCount() ? $extractabout : [] ; 

    foreach ($infos as $info) { 
     if(!empty($info['username']) && !empty($info['password']) && !empty($info['id']) && !empty('role')) { 
      $_SESSION['username'] == $info['username']; 
      $_SESSION['password'] == $info['password'];   
     } 

    } 

    if(isset($_SESSION['username'], $_SESSION['password'], $_SESSION['user_id'], $_SESSION['role'])) { 
     header("Location: test.php"); 
    } 

} 

?> 

我有一個錯誤,當我給$_SESSION['username']$info['username']叫值:PHP會話錯誤未定義指數

未定義指數:用戶名
Undifined指數:密碼

+0

多個錯誤。 '=='與'='不同。記得在'header(「Location:$ url」)之後'exit()';'調用 – Raptor

回答

3

你不」 t值的分配,你只需要使用一個=所以使用這個:

$_SESSION['username'] = $info['username']; 
$_SESSION['password'] = $info['password']; 

另外,我會在每個標題後放一個exit();,以確保腳本停止執行!在會議

header("Location: test.php"); 
exit(); 
1

使用=的分配值不==(比較)。

還什麼是!empty('role')我認爲這將是!empty($info['role'])

if(!empty($info['username']) && !empty($info['password']) && !empty($info['id']) && !empty($info['role'])) { 
     $_SESSION['username'] = $info['username']; 
     $_SESSION['password'] = $info['password'];      
} 
-1

你在你的代碼的語法錯誤的,糾正一個是:看準

if(!empty($info['username']) && !empty($info['password']) && !empty($info['id']) && !empty($info['role'])) { 
    $_SESSION['username'] = $info['username']; 
    $_SESSION['password'] = $info['password']; 
} 
+0

爲什麼要分開'isset()'調用?這沒有必要。 – Raptor

+0

這isset($ _ SESSION ['username'],$ _SESSION ['密碼'],$ _SESSION ['user_id'],$ _SESSION ['角色']))是錯誤的,我只是糾正語法。 –

+1

@NeedhiAgrawal你可以在逗號()中使用逗號分隔多個檢查http://stackoverflow.com/questions/14476609/php-isset-with-multiple-parameters –