我不明白我的代码中的问题。如果用户名和密码正确,我正在尝试重定向用户。
我从文档中读到“在发送任何实际输出之前必须调用标头”。这是指什么样的输出?我不认为我输出任何东西。 这是我的代码。提前谢谢。
<?php
require "index-header.html";
?>
<div class="display">
<?php
if(isset($_POST["logout"])) {
session_unset();
session_destroy();
}
if(isset($_POST["login"])) {
$name = $_POST["name"];
$password = $_POST["password"];
// connect to database
$db = connect();
$query = "SELECT admin_name, admin_password FROM login WHERE admin_name = :name AND admin_password = :password";
$login = $db->prepare($query);
$login->execute(array(
":name" => $name,
":password" => $password
));
if($login->rowCount()) {
// start session
$_SESSION["admin"] = "Laura";
header("Location:admin.php");
exit;
}
else {
echo "<p class='message'>Incorrect username or password</p><br>";
require "login-form.html";
}
}
else {
require "login-form.html";
}
?>
</div>
答案 0 :(得分:3)
输出表示在浏览器中输出的任何HTML / CSS / JavaScript(或其他数据)。
您的代码中存在两个问题,可能会导致标题更改无法重定向:
require "index-header.html";
和
<div class="display">
对此基本术语的更好解释是只能在任何输出开始之前修改标题。每次访问网页时,标题都会在正文之前发送。标题可以提供字符集,响应代码(如404)或重定向信息等信息。如果您需要显示阿拉伯字符而不是英语,该怎么办?标题需要让浏览器知道如何处理传入的主体(或者你如何引用它:输出)。
答案 1 :(得分:2)
如rick6所述,在重定向之前,您无法使用HTML。 您可以在需要之前移动登录检查
<?php
/* check login */
// if admin redirect
// else
// $message = "<p class='message'>Incorrect username or password</p><br>";
require "index-header.html";
echo '<div class="display">';
....
?>
答案 2 :(得分:1)
标头。
但是,在这里,<div>
是一个输入,您需要index-header.html
,因此标题位置不起作用。
你可以使用JS:
function nextpage() {
document.location.href='nextpage.php';
}
nextpage();
答案 3 :(得分:0)
在页面的第一行写下ob_start它将清除标题,并且不会显示以前的标题消息。 。 。
<?php
ob_start();
?>