0

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

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;

}

ArchDemon
  • 2,821
  • функцией header можно пользоваться до того, как вы выведите любой текст на экран – ArchDemon Mar 30 '19 at 19:37
  • Пробовал перенести хедер до того как поставил вардамп. Просто ничего не отобразилось, в результате просто стоит нулл – MISTIKMAKS Mar 30 '19 at 19:38
  • Так а чего хотите добиться? Редирект на другую страницу сделает новый запрос, в котором никакого $_POST нету – Dmitry Kozlov Mar 30 '19 at 20:40
  • Я хочу добиться того чтобы мне переменная i переместилась на страничку которая была в редиректе, а как ето сделать я не знаю, мне подсказали сделать через вардамп и сессию, но через сессии у меня проблемы, а вардамп что то не работает – MISTIKMAKS Mar 30 '19 at 20:43
  • 1
    Хосподя, кто вас так учит программировать? Адсько и Печалько. По сути, заголовки и старт сессий должны быть в самом начале скрипта – And Mar 31 '19 at 04:32
  • Может быть - ob_start() и ob_end_flush() использовать? Как здесь - https://vk-book.ru/redirekt-v-php-pri-uzhe-zadannyx-zagolovkax/ – insun Mar 31 '19 at 06:15

1 Answers1

0

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

session_start();

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

$_SESSION['answers_count'] = $i;

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

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

$_SESSION

Kirill
  • 9,126