2014-12-03 61 views
1

这是一个登录验证页面,一旦它验证了用户的详细信息我希望它指示用户在“account.php”页面,所有验证工作正常,但用户只是不会重定向到帐户页面。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); 
} 
?> 

回答

1

您正在打印一些HTML到浏览器,所以它没有重定向。

删除

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

或者,在你的文件的开头添加

ob_start()

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

+0

它仍然不重定向我虽然 – 2014-12-03 11:52:26

+1

为了澄清,使用标题您已经发送了一些内容到浏览器后,你不能重定向。如果你确实希望他们看到消息然后被重定向,你可以在html的头部输出一个元刷新标签,如下所示:''但老实说,用户不需要看到那个页面,并且会用来立即登录 – 2014-12-03 11:52:35

+0

通常,如果你修复这两个,它应该可以工作。 – Pupil 2014-12-03 11:53:20

0

一旦将某些HTML回显到页面上,就不能使用标题重定向。在删除回显的HTML之前,您应该会收到类似下面的错误。

Warning: Cannot modify header information - headers already sent 
0

而是在屏幕上显示的信息,你可以使用JavaScript使用一个警告框,然后用户可以重定向到其他页面。我希望如果你想让用户查看消息,这将有助于达到目的。

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