会话似乎在页面刷新或在新选项卡中打开页面时死亡

时间:2015-12-18 15:09:29

标签: php session

在我的项目中,成功登录后,会打开一个显示用户名的页面。这很完美。但是,当我刷新同一页面而没有注销时,会话似乎被破坏,用户名就消失了。此外,如果我尝试在新选项卡中打开页面,则表明您需要先登录并且会话似乎丢失或被破坏。在我实施和测试之前几天,代码运行良好。今天,这个问题发生了。无法弄清楚错误或问题是什么。请帮忙。 这是代码

<?php
session_start();
error_reporting(0);
?>
<html>
<head>
    <title>Profile Test</title>
</head>
<body>
<?php 
if(1==2)
{
    $message = "Login to access the books page";    
    echo "<script type='text/javascript'>alert('$message');</script>";
    echo "<script language='javascript'>";
    echo "window.open('register.html','_self')";
    echo "</script>";
}
else
{
echo "Welcome ".$_SESSION['username'];
}
?>
<br>
<button  id="logout">Logout</button>
</body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
        $("#logout").click(function(){
            <?php session_destroy(); ?>
            window.open("index.html","_self");
        });
    });
</script>
</html>

2 个答案:

答案 0 :(得分:2)

删除<?php session_destroy(); ?>您正在销毁会话,因此当页面加载时没有会话。当您希望用户注销时,将用户重定向到具有session_destroy代码的某个页面。

答案 1 :(得分:0)

将javascript与php混合有时会导致意外结果。 PHP中的PHP将始终运行。此代码导致每次页面加载时都会销毁会话,因为session_destroy()始终执行:

<script type="text/javascript">
$(document).ready(function(){
    $("#logout").click(function(){
        <?php session_destroy(); ?>
        window.open("index.html","_self");
    });
});

</script>