无法修改标题信息 - 已在第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>
答案 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();
}
同样,这不是最佳做法,但有时可能会派上用场。