无法修改标头信息 - 已发送的标头

时间:2015-03-02 09:13:33

标签: php

  

无法修改标题信息 - 已在第41行的C:\ xampp \ htdocs \ d \ login.php中发送的标题(输出从C:\ xampp \ htdocs \ d \ login.php:15开始)   
  我在登录表单时遇到此错误第41行有什么问题?

<!doctype html>
<html>
<head>
<title>Login</title>
</head>
<body>

<p><a href="register.php">Register</a> | <a href="login.php">Login</a></p>
<h3>Login Form</h3>
<form action="" method="POST">
    Username: <input type="text" name="user"><br />
    Password: <input type="password" name="pass"><br />	
    <input type="submit" value="Login" name="submit" />
</form>
<?php
if(isset($_POST["submit"])){
    if(!empty($_POST['user']) && !empty($_POST['pass'])) {
        $user=$_POST['user'];
        $pass=$_POST['pass'];

        $con=mysql_connect('localhost','yoyo','glappyhunt') or die(mysql_error());
        mysql_select_db('user_registration') or die("cannot select DB");

        $query=mysql_query("SELECT * FROM login WHERE username='".$user."' AND password='".$pass."'");
        $numrows=mysql_num_rows($query);
        
        if($numrows!=0) {
            while($row=mysql_fetch_assoc($query)) {
                $dbusername=$row['username'];
                $dbpassword=$row['password'];
            }

            if($user == $dbusername && $pass == $dbpassword0 {
                (ob_start());
                $_SESSION['sess_user']=$user;

                /* Redirect browser */
                header("Location: member.php");
            }
        } else {
            echo "Invalid username or password!";
        }
    } else {
        echo "All fields are required!";
    }
}
?>

</body>
</html>

3 个答案:

答案 0 :(得分:0)

Header必须在所有输出之前,将PHP脚本移到页面顶部。

<?php
   ...
?>

<!doctype>
<html>
    ...

答案 1 :(得分:0)

将if条件放在页面顶部。

在发送标头甚至不是html之前,你不应该发送任何输出。在您的代码中,html标记在调用标头之前作为输出发送。根据php.net上的标题信息。

  

请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header()。

通常,header包含要发送的内容的信息,如内容类型,大小,资源状态。如果先发送原始输出然后发送标题,则标题没有意义,因此错误。

答案 2 :(得分:0)

除了豹的回复之外,在某些情况下我们必须在显示html后进行重定向。尽管如此,这可能不被认为是一种好的做法(我会在所有事情完成之后加载视图),但我们可以通过javascript重定向来破解它。

对于此示例,我们还可以执行以下操作:

 if($user == $dbusername && $pass == $dbpassword0 {

        $_SESSION['sess_user']=$user;
        /* Redirect browser */
         echo '<script>document.location.href="members.php";</script>';
         die();
           }

同样,这不是最佳做法,但有时可能会派上用场。