刷新/重定向后PHP会话变量丢失

时间:2014-02-21 19:25:10

标签: php session redirect login session-variables

我正在制作登录页面,一切正常,但刷新安全页面或重定向到另一个页面变量时会消失。

登录

<?php session_start(); 

//connection to database and other stuff

if ($user == $dbuser && $pass == $dbpass) {

    $_SESSION['user'] = $user;
    $_SESSION['authenticated'] = "yes";
    $suser = $_SESSION['user']; //just to test if session works

}

?>

安全页面

<?php session_start(); ?>

//small amount of html here

<?php
    $suser = $_SESSION['user'];
    $sauth = $_SESSION['authenticated'];

    if ($sauth != 'yes') { //not completed yet (needs user name check)
        echo "<a href='./'>Log in</a> first!";
        require ('./login.php');
        die;
    } else {
    //not so important code here
    }
?>

//rest of html here

我没有注意到任何错误和错误日志文件是干净的所以它必须是别的东西。重定向到安全页面后,会话工作正常,但正如我之前所说,刷新页面或其他重定向会清除会话变量。

页面:http://nano.filiparag.com/admin/ 如果你想测试它只需要用户名和密码

注意:
现在我尝试使用setcookie()执行此操作,但它无法再次使用


解决

问题出在退出按钮上。我为它制作了单独的PHP文件,现在一切正常。

2 个答案:

答案 0 :(得分:0)

我认为您可以尝试使用此

登录:

<?php session_start(); 
ob_start();
//connection to database and other stuff

if ($user == $dbuser && $pass == $dbpass) {

    $_SESSION['user'] = $user;
    $_SESSION['authenticated'] = "yes";
    $suser = $_SESSION['user']; //just to test if session works

}

?>

安全页面:

<?php session_start(); 
  ob_start();?>

//small amount of html here
<?php session_start(); ob_start();
    $suser = $_SESSION['user'];
    $sauth = $_SESSION['authenticated'];

    if ($sauth != 'yes') { //not completed yet (needs user name check)
        echo "<a href='./'>Log in</a> first!";
        require ('./login.php');
        die;
    } else {
    //not so important code here
    }
?>

//rest of html here

答案 1 :(得分:0)

我猜你的login.php脚本在包含会话变量时正在做一些事情。我可以查看您的login.php脚本,然后我会编辑我的答案