Я не понимаю проблему в моем коде. Я пытаюсь перенаправить пользователя, если имя пользователя и пароль верны.redirect using header in php
Я прочитал из документации, что «заголовок должен быть вызван до отправки любого фактического вывода». О какой продукции это относится? Я не думаю, что я что-то выводил. Вот мой код. Заранее спасибо.
<?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>
Это означает, что вы должны положить заголовки в верхней части файла php. Даже одно пустое пространство не должно выводиться –
, если вы не используете буферизацию вывода, тогда вы не можете отправлять заголовки после рендеринга html. В верхней части каждой страницы вы хотите включить буферизацию вывода (ob_start() и т. Д.) - создать страницу и в конце страницы отправить буфер клиенту/браузеру с помощью чего-то вроде ob_end_flush() и т. Д. – RamRaider
Переместить это php-код выше index-header.html, и он должен работать, хотя я должен сказать, что ваше желание бросить кучу PHP в ваш HTML-код - плохой выбор дизайна, но это ваш выбор. – Halfstop