Заголовок не работает с сеансами

Я создал систему входа в систему, используя сеансы и файлы cookie в php.

После входа в систему я хочу, чтобы пользователи просматривали страницы по порядку, не позволяя им вернуться на предыдущую страницу или любую страницу с помощью кнопки «Назад» или ввода URL-адреса (даже если они вошли в систему). За исключением первой информационной страницы, на каждой странице есть вопрос, и только правильный ответ может привести вас к следующей странице, вроде как охота за сокровищами. Для этого я использую переменные сеанса для каждой страницы.

Первая страница после входа в систему (users-area.php):

<?php session_start(); require_once("user.cookies.php"); $firstname_user = $_SESSION["SESS_USERFIRSTNAME"]; ?> /*html part*/ <a href="q1.php">Question 1</a><br><br> <?php $_SESSION["from_start"] = "true"; ?> <a href="logout.php">Logout</a> 

Вторая страница после этого (q1.php):

 <?php session_start(); require_once("user.cookies.php"); $firstname_user = $_SESSION["SESS_USERFIRSTNAME"]; if (isset($_POST["ans1"])) { //if answer is submitted if ($_POST["ans1"]=="correct") { //if answer is correct $_SESSION["from_q1"] = "true"; //for verifying in next page, q2.php header('Location: q2.php'); //heading to next page } else{ //if answer is not correct $_SESSION["from_start"] = "true"; //same page loads } } if($_SESSION['from_start'] == "false"){ //to check that it came from users-area.php //if not, logout header("Location: logout.php"); } else{ //if yes,reset the variable so that they can't access from anywhere else anymore $_SESSION['from_start'] = "false"; } ?> //html part <form method="POST"> //sending input to same page <input type="text" name="ans1"> <input name="submit" type="submit" value="Sumbit"> </form> <a href="logout.php">Logout</a> 

Страница после этого (q2.php):

 <?php session_start(); require_once("user.cookies.php"); $firstname_user = $_SESSION["SESS_USERFIRSTNAME"]; if($_SESSION['from_q1'] == "false"){ header("Location: logout.php"); } else{ $_SESSION['from_q1'] = "false"; } } ?> 

Система входа в систему работает отлично. Но после добавления всех этих ограничений, в q1.php, отправка правильного ответа приводит к выходу из системы. Хотя я поставил header('Location: q2.php'); перед тем, что связано с выходом из системы. Отправка правильного ответа должна привести к q2.php.

Все остальное работает. Неверный ответ в q1.php только перезагружает страницу, как ожидалось. И попытка перейти на любую страницу по обратной кнопке или ввести URL-адрес приведет к выходу из системы.

Если это помогает, вот пользователь user.cookies.php:

 <?php //redirect function function returnheader($location){ $returnheader = header("location: $location"); return $returnheader; } if(!strlen($_SESSION["SESS_USERNAME"]) ){ //redirect returnheader("index.php"); } ?> 

Почему q1.php не работает правильно с правильным ответом? Разве этот заголовок нельзя использовать один за другим?