Как вы используете переменную сеанса PHP, а затем измените ее? - PullRequest
2 голосов
/ 19 марта 2011

У меня есть ситуация, когда я обрабатываю форму, если в переменной сеанса есть проблемы и сообщение об ошибке, а после перенаправления заголовка выводится эхо. Чтобы очистить сообщение об ошибке сеанса, я затем установил его на нуль; однако, выполнение этого заставляет это не повторяться вообще. Мой код довольно длинный, но вот пример, демонстрирующий поведение.

Весь файл:

<?php
session_start();

if($_REQUEST['set_session'] == 'true')
{

    $_SESSION['error_message'] = '<p>Should be this.</p>';

    header('Location: session_test.php');
}
?>
<html>
<head>
</head>
<body>

<?
echo $_SESSION['error_message'];

$_SESSION['error_message'] = '<p>Should not be this.</p>';

?>

<p><a href="session_test.php?set_session=true">Test</a></p>
</body>

Может кто-нибудь объяснить, почему я получаю «Не должно быть этого», а не «Должно быть это»? И как я могу получить желаемый результат.

Ответы [ 2 ]

3 голосов
/ 19 марта 2011

Я думаю, что ваша проблема должна быть исправлена, если вы выйдете из своего скрипта после заголовка. Используйте это:

header('Location: session_test.php');
exit();

Скрипт запускается после вызова заголовка, даже если браузер переходит на другую страницу. Таким образом, хотя эхо-сигнал на этой странице не отображается, сообщение об ошибке все еще изменяется.

0 голосов
/ 19 марта 2011

После перенаправления header необходимо exit, в противном случае сценарий продолжает выполняться.

...