PHP尝试发送成功消息,然后将用户重定向到另一个页面

时间:2014-12-03 11:47:07

标签: php login header

这是一个登录验证页面,一旦它验证了用户详细信息,我希望它将用户指向" account.php"页面,所有验证工作正常,但用户只是没有被重定向到帐户页面。

<?php   
$username = $_POST['username'];
$password = $_POST['password']; 

if($_SESSION['loggedin'] = true) {
    session_destroy();
}

if(empty($username) || empty($password)) {
    echo("ERROR|Please fill out all of the fields.");
} else {    
    $file = fopen("Users.csv","r");
    while(! feof($file)) {
        $rows = fgetcsv($file);
        if (($rows[1] == $username) && ($rows[4] == $password)) {
            session_start();
            $_SESSION['loggedin'] = true;
            $_SESSION["username"] = $rows[1];
            $_SESSION["email"] = $rows[2];
            $_SESSION["dateOfBirth"] = $rows[3];
            $_SESSION["password"] = $rows[4];
            $_SESSION["userScore"] = $rows[5];

            echo("SUCCESS|Logging In as " . $username);
            header('Location: ../account.php');
            exit();
        } 
    }
    echo("ERROR|Incorrect Username or Password.");
    fclose($file);
}
?> 

3 个答案:

答案 0 :(得分:1)

您正在向浏览器打印一些HTML,因此,它不会重定向。

删除

echo("SUCCESS|Logging In as " . $username);

或者,添加

ob_start()在您的文件中。

这会将所有输出值存储在缓冲区中,并导致重定向。

答案 1 :(得分:0)

一旦您在页面上回显了一些HTML,就无法使用标题重定向。在删除回显的HTML之前,您应该会收到如下所示的错误。

Warning: Cannot modify header information - headers already sent

答案 2 :(得分:0)

您可以使用javascript警告框,而不是在屏幕上显示消息,然后可以将用户重定向到其他页面。我希望如果您希望该用户查看该消息,则可以达到此目的。

echo "<script type='text/javascript'>";
echo "alert('Successful login');";
echo "</script>";