成功登录PHP后重定向

时间:2014-08-24 11:02:19

标签: php forms login

我有一个简单的登录表单,包含用户名和密码。这个表单之后的PHP就是这个

<?php
session_start();
include 'global.php';    

// Grab User submitted information
$username = $_POST['username'];
$password = $_POST['password'];

$result = mysql_query("SELECT username, password FROM users WHERE username = '$username' and password = '$password'");

$row = mysql_fetch_array($result);

if($row["username"]==$username  && $row["password"]==$password)
{   
    echo 'ok';
}
else {
    echo 'not ok'; 
}
?>

提交后,如果用户名和密码存在,表单会显示正确的消息(确定或不正常),但我似乎做的不仅仅是回显。

当用户存在时,表单必须重定向到index.php-page。我试着把它放在if子句中

header('Location: index.php');

但这不起作用:(

当用户不存在时,它必须在登录表单上显示一条消息。所以我把它放在else子句

$_SESSION['errors'] = array("Your username or password was incorrect."); 
header("Location: login.php");  

这会将消息存储在会话中,因此当我将以下代码放在登录表单上时

 <?php if (isset($_SESSION['errors'])): ?> 
    <div class="form-errors"> 
        <?php foreach($_SESSION['errors'] as $error): ?> 
            <p><?php echo $error ?></p> 
        <?php endforeach; ?> 
    </div> 
<?php endif; ?>

我希望这也会奏效,但遗憾的是没有。有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

标头之前的

不应该是任何echo,var_dump,print_r或任何html或任何文本 并在标题

之后写出exit()
header('Location: index.php');
exit();

答案 1 :(得分:0)

如果你有结果

?>
<?php

标题位置在这种情况下不起作用。

另一种方法是在顶部使用ob_start();

ob_start();
header("Location: yourpage.php");
exit();

Reference : header location not working in my php code

相关问题