为什么我的会话变量在重定向到相同的脚本时自动取消设置?

时间:2012-04-16 08:30:29

标签: php

我在testmysql.php中设置了一个名为foo的会话变量,我再次将脚本重定向到相同的脚本,在那里我打印会话var然后取消设置它。但是,会话变量似乎已经取消了已重定向..为什么这样,我该怎么解决这个问题?

<?php 

session_start();

if(empty($_GET)) {
    $_SESSION['foo'] = 'bar';
    header("location:testmysql.php?redirect". '=' . 'bar');
}

var_dump( $_SESSION);
unset ($_SESSION['foo']);

2 个答案:

答案 0 :(得分:1)

设置重定向时不会中止脚本,因此始终执行unset ($_SESSION['foo'])

<?php 

session_start();

if(empty($_GET)) {
    $_SESSION['foo'] = 'bar';
    header("location:testmysql.php?redirect". '=' . 'bar');
    exit; // <--- Missing
}

var_dump( $_SESSION);
unset ($_SESSION['foo']);

答案 1 :(得分:0)

if替换为if else

if(empty($_GET)) {
    $_SESSION['foo'] = 'bar';
    header("location:testmysql.php?redirect". '=' . 'bar');
}
else
{
    var_dump( $_SESSION);
    unset ($_SESSION['foo']);
}