Переменная Session PHP не отображается перед вызовом unset

В основном у меня есть следующий код, который в настоящее время работает нормально, как ожидалось:

if ( isset($_SESSION['message']) )
{
echo '<p class="user_message">'.$_SESSION['message'].'</p>';

//unset( $_SESSION['message'] );
}

Как видите, unset () закомментирован. То, что я хочу сделать, это сбросить сообщение сеанса после того, как оно отразилось эхом. Однако когда я запускаю этот код без комментариев, переменная сеанса вообще не выводится?

Спасибо заранее.

РЕДАКТИРОВАТЬ:

Спасибо за ответ, однако это решение не работает и возвращает тот же результат, что и моя первоначальная попытка. Вот код, который определяет сообщение сеанса:

$_SESSION['message'] = "";

// We know user email exists if the rows returned are more than 0
if ( $result->num_rows > 0 ) {

$_SESSION['message'] = $_SESSION['message'].'User with this email already         exists!<br />';

}
// Validate email address
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

$_SESSION['message'] = $_SESSION['message'].'Email address is invalid, please try again!<br />';

}
// Validate Referral code
if ( $refby != "" ) {
if ( (count_digit($refby) > 0 && count_digit($refby) < 6) || count_digit($refby) > 6 ) {
$_SESSION['message'] = $_SESSION['message'].'Referral code is invalid!<br />';
} elseif ( !is_numeric($refby) ) {
$_SESSION['message'] = $_SESSION['message'].'Referral code is invalid!<br />';
}

}

 // Validate password length
if ( count_digit($_POST['password']) < 6 ) {

$_SESSION['message'] = $_SESSION['message'].'Password invalid, must be more than 6 characters!<br />';

}

// Validate password confirmed
if ( $_POST['password'] != $_POST['confirm_password'] ) {

$_SESSION['message'] = $_SESSION['message'].'Your passwords do not match!<br     />';

}

 if ( count_digit($num1)>2 || count_digit($num2)>2 || count_digit($num3)>2 ||       count_digit($num4)>2 || count_digit($num5)>2 ) {

$_SESSION['message'] = $_SESSION['message'].'Please select your lucky    numbers!<br />';
}

if ( $_SESSION['message'] != "" ) {
header("location: #register_content");

Тем не менее, я не понимаю, как код прекрасно работает до сброса переменной сеанса? хотя содержимое выводится до того, как переменная сеанса будет сброшена?

Большое спасибо

0

Решение

Вы можете использовать следующий подход:

if ( isset($_SESSION['message']) )
{
$message = $_SESSION['message'];
echo '<p class="user_message">'.$message.'</p>';
unset( $_SESSION['message'] );
}

Он распечатает данные, а затем сбросит их.

также не забудьте позвонить session_start() в начале вашего сценария.

0

Другие решения

Так что для всех, кто заинтересован.

Это происходит из-за того, что скрипт продолжает работать, не совсем уверенный в том, как он работает, но в основном после удаления переменной сеанса скрипт больше не может ссылаться на него.

Как только переменная сеанса не установлена ​​в сценарии, exit(0); необходимо. Это решает проблему, и переменная сеанса сбрасывается, однако скрипт все еще выводит содержимое переменной сеанса до того, как он будет сброшен.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector