2015-01-08 93 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 –