fapchat
@fapchat

Почему header нельзя использовать после оператора вывода?

Помните, что функцию header() можно вызывать только если клиенту еще не передавались данные. То есть она должна идти первой в выводе, перед ее вызовом не должно быть никаких HTML-тегов, пустых строк и т.п

Почему я не могу просто использовать header после проверки пароля и имейла пользователя?
<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://fonts.googleapis.com/css?family=Montserrat:100,200,300,400,500,600,700,800,900&display=swap&subset=cyrillic,cyrillic-ext,latin-ext" rel="stylesheet">
    <link rel="stylesheet" href="style.css">
</head>
...
	if ($stmt->fetch() && password_verify($password_1, $hashP_1)) {
		header('Location: https://dev.mysql.com/doc/refman/8.0/en/entering-queries.html');
	}

Можно ли чем-то заменить подобный код? Данный код у меня прекрасно работает
  • Вопрос задан
  • 214 просмотров
Решения вопроса 2
shurshur
@shurshur
Сисадмин, просто сисадмин...
Потому что в протоколе HTTP заголовки выдаются до любого контента. Если контент уже хотя бы частично выдан, то Header'ы уже выводить нельзя (хотя это можно обойти через ob_start).
Ответ написан
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Первой строкой скрипта сделайте
<?php
ob_start();
?>
<!DOCTYPE html>
.........
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы