Ошибка Cannot modify header information - headers already sent [дубликат]

125
28 декабря 2019, 17:40
This question already has answers here:
Cannot modify header information - headers already sent by (3 ответа)
Закрыт 9 месяцев назад.

Я новичок и я делаю проект с тестированием и столкнулся с такой ошибкой.

Warning: Cannot modify header information - headers already sent by (output started at W:\domains\super-fizuka.com\function\function_maks.php:418) in W:\domains\super-fizuka.com\function\function_maks.php on line 420

418 строка var_dump($i);

420 строка header("Location:".URL."?page=test_result");

Ошибка состоит в том что когда посылаеш заголовки, то сначала обрабатываются HTTP заголовки, потом они ушли и снова послать их нельзя, то есть когда header() пошел мой var_dump ставить нельзя, но по моему заданию нужно передать переменную через var_dump() и перейти через header() на другую страницу для вывода оценки.

Как можно переделать так, чтобы эта ошибка ушла? Помогите пожалуйста!

function testOneChecker () {
$i = 0;
if (isset($_POST['submit'])) {
    if (isset($_POST['question-1-answers-C'])) {
        $i++;
    }
    if (isset($_POST['question-2-answers-A'])) {
        $i++;
    }
    if (isset($_POST['question-3-answers-B'])) {
        $i++;
    }
    if (isset($_POST['question-4-answers-A'])) {
        $i++;
    }
    if (isset($_POST['question-5-answers-A'])) {
        $i++;
    }
    if (isset($_POST['question-6-answers-C'])) {
        $i++;
    }
    if (isset($_POST['question-7-answers-A'])) {
        $i++;
    }
    if (isset($_POST['question-8-answers-A'])) {
        $i++;
    }
    if (isset($_POST['question-9-answers-B'])) {
        $i++;
    }
    if (isset($_POST['question-10-answers-A'])) {
        $i++;
    }
    if (isset($_POST['question-11-answers-C'])) {
        $i++;
    }
    if (isset($_POST['question-12-answers-D'])) {
        $i++;
    }
}
var_dump($i);
header("Location:".URL."?page=test_result");
return $i;

}

Answer 1

На странице, на которую ожидается переход, в самом её начале, стартуете сессию. То же самое делаете в файле с обработчиком, куда отправляется post. Вы получаете возможность работать с переменными $_SESSION.

session_start();

В файле обработчике, после отработки вашей логики, сохраняете нужные данные в переменную массива $_SESSION

$_SESSION['answers_count'] = $i;

В файле, на который вы ушли через header("location:some_url");, проверяете присутствие необходимых переменных и осуществляете их вывод и/или обработку

if (isset($_SESSION['answers_count'])) {
    $answersCount = $_SESSION['answers_count'];
    ....
}

$_SESSION

READ ALSO
Метод gzcompress из PHP в C#

Метод gzcompress из PHP в C#

Каким методом в C# можно заменить метод сжатия строки из PHP

189
Не выводится the_excerpt() поста в WordPress

Не выводится the_excerpt() поста в WordPress

Вот код вывода трех последних постовУ меня много рубрик, но этот код выводит последние три добавленные посты не зависимо в каких рубриках...

125
Создаю тест на php

Создаю тест на php

Нужно сделать так чтобы вопросы появлялись по очереди после того как пользователь ответит

148
Как можно убрать этот лимит

Как можно убрать этот лимит

Есть таблица и в нем запись длинной 1886209Когда достаю эту записть то получаю строку длиной 1048576

161