Cannot modify header information - headers already sent by
Ошибка при переадресации, после успешной авторизации
<?php
include "header.html";
require "db.php";
$data=$_POST;
if(isset($data['do_login']))
{
$errors = array();
$user = R::findOne('users', 'login = ?', array($data['login']));
if( $user)
{
if(password_verify($data['password'], $user->password))
{
// $_SESSION['logged_user'] = $user;
header('Refresh: 5; Location: mainwindow.html');
echo '<div style = "color: green;">Вы Авторизованы! <br/> Можете перейти на <a href="http://localhost/mainwindow.php">главную</a> страницу!</div><hr>';
// exit;
} else {
$errors[] = 'Пароль неправильно введен';
}
} else
{
$errors[] = 'Пользователь не найден!';
}
if (!empty($errors)) {
echo'<div style="color:red;">'.array_shift($errors).'</div><hr>';
}
}
?>
<head>
<link href = "autorizstyle.css" rel="stylesheet">
</head>
<body>
<div class="box">
<div>
<p class="titleaut">Авторизация</p>
<form action="login.php" method="POST">
<div class="win_log">
<p>
<p><strong>Логин:</strong></p>
<input type="text" name="login" value = "<?php echo @$data['login'];?>">
</p>
</div>
<div class="win_log">
<p>
<p><strong>Пароль:</strong></p>
<input type="password" name="password" value = "<?php echo @$data['password'];?>">
</p>
</div>
<p>
<button class="buton" type="submit" name = "do_login">Войти</button>
</p>
</form>
</div>
</div>
</body>
<?php
include "footer.html";
?>
Как звучит ошибка:
Cannot modify header information - headers already sent by (output started at C:\OpenServerPanel\OSPanel\domains\localhost\header.html:1) in C:\OpenServerPanel\OSPanel\domains\localhost\login.php on line 14
Код header.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link href = "stylemain.css" rel="stylesheet">
</head>
<body>
<div class="header">
<div class="mainers__div">
<a href="/mainwindow.php" class="mainers">Главная</a>
</div>
<div class="autlog">
<a href="/login.php">Авторизация</a>
<a href="/signup.php">Регистрация</a>
</div>
</div>
</body>
</html>
Помните, что функцию header()
можно вызывать только если клиенту еще
не передавались данные. То есть она должна идти первой в выводе, перед
ее вызовом не должно быть никаких HTML-тегов, пустых строк и т.п.
см. https://www.php.net/manual/ru/function.header.php
--> Вы вызываете при работе header('Refresh: 5; Location: mainwindow.html');
, а перед тем выводите содержимое header.html
Тут решение такое может быть - помещайте нужное в переменные, заместо echo
и потом выводите, где нужно, в соответствии с очередностью.
Тогда Вам не нужно вставлять содержимое файла перед кодом php
- пишите обычным порядком html
, а php
вставляете выше <!DOCTYPE html>
И разберитесь с кодом - что у Вас дублируются <head>
и <body>
? - Уберите лишние, сделайте нормальную валидную страницу html
, а код php
выше, как уже описано.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Ошибка: Fatal error: Uncaught Error: Call to a member function bind_param() on bool Что я сделал не так?
Я начинающий PHP разработчик,меня очень интересует данный язык, хочу заниматься в ближайшее время написанием скриптов и логики для сайтовНо...