在调用unset之前未显示PHP会话变量

在调用unset之前未显示PHP会话变量,php,session,echo,unset,Php,Session,Echo,Unset,基本上,我有以下代码,目前运行良好,正如预期的那样: if ( isset($_SESSION['message']) ) { echo '<p class="user_message">'.$_SESSION['message'].'</p>'; //unset( $_SESSION['message'] ); } if(isset($\u会话['message'])) { 回显“”.$\u会话['message']”。; //取消设

基本上,我有以下代码,目前运行良好,正如预期的那样:

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

    //unset( $_SESSION['message'] );
    }
if(isset($\u会话['message']))
{
回显“

”.$\u会话['message']”。

; //取消设置($_会话['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 />';
}
$\u会话['message']=”;
//我们知道,如果返回的行数超过0,则存在用户电子邮件
如果($result->num_rows>0){
$\u会话['message']=$\u会话['message'.'具有此电子邮件的用户已存在!
; } //验证电子邮件地址 如果(!filter_var($email,filter_VALIDATE_email)){ $\u会话['message']=$\u会话['message'.'电子邮件地址无效,请重试!
; } //验证转介代码 如果($refby!=“”){ 如果((计数位数($refby)>0和计数位数($refby)<6)|计数位数($refby)>6){ $\u会话['message']=$\u会话['message'.'引用代码无效!
; }elseif(!是数字($refby)){ $\u会话['message']=$\u会话['message'.'引用代码无效!
; }
}

//验证密码长度
如果(计数位数($\u POST['password'])小于6){
$\u会话['message']=$\u会话['message'.'密码无效,必须超过6个字符!
}

//验证已确认的密码
如果($\u POST['password']!=$\u POST['confirm\u password'])){
$\u会话['message']=$\u会话['message'.'您的密码不匹配!
}

if(计数位数($num1)>2 |计数位数($num2)>2 |计数位数($num3)>2 |计数位数($num4)>2 |计数位数($num5)>2){
$\u会话['message']=$\u会话['message'.'请选择您的幸运号码!
; } 如果($\会话['message']!=“”){ 标题(“位置:#注册内容”);
但是,我不明白在取消设置会话变量之前,代码是如何完美工作的?即使在取消设置会话变量之前,内容是回音的


非常感谢

您可以使用以下方法:

if ( isset($_SESSION['message']) )
{
    $message = $_SESSION['message'];
    echo '<p class="user_message">'.$message.'</p>';
    unset( $_SESSION['message'] );
}
if(isset($\u会话['message']))
{
$message=$\会话['message'];
回显“

”.$message.

”; 取消设置($_会话['message']); }
它将打印数据,并在以后取消设置


另外,请记住在脚本开始时调用
会话\u start()

任何感兴趣的人都可以这样做

发生这种情况是因为脚本继续运行,不确定它是如何工作的,但基本上一旦删除会话变量,脚本就不能再引用它了


一旦在脚本中取消设置会话变量,则需要退出(0)。这可以解决问题,并且会话变量已取消设置,但是在取消设置之前,脚本仍会回显会话变量的内容。

如果仅运行该代码,它将不会显示,因为没有任何设置值为
$\u session['message']
isset($\u会话['message'])
不检查会话中是否有任何值,只检查其是否已设置。它可以同时设置为空。您能提供更多代码吗?这一点的原因是什么?何时/如何设置消息会话变量?仅添加此代码无法给出正确答案更多代码谢谢,我可以确认消息变量为holds数据,如果我从原始代码中删除unset(),脚本将按应有的方式执行。唯一的问题是消息变量仍然设置为保留错误。
// 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");
if ( isset($_SESSION['message']) )
{
    $message = $_SESSION['message'];
    echo '<p class="user_message">'.$message.'</p>';
    unset( $_SESSION['message'] );
}