Php 在页面刷新时或在新选项卡中打开页面时,会话似乎停止

Php 在页面刷新时或在新选项卡中打开页面时,会话似乎停止,php,session,Php,Session,在我的项目中,成功登录后,将打开一个显示用户名的页面。那很好用。但是,当我刷新同一页面而不注销时,会话似乎被破坏,用户名消失。另外,如果我尝试在一个新选项卡中打开页面,它会显示您需要先登录,并且会话似乎丢失或被破坏。在我实现和测试它的前几天,代码运行良好。这个问题是在今天发生的。无法找出错误或问题所在。请帮忙。 这是密码 <?php session_start(); error_reporting(0); ?> <html> <head> <ti

在我的项目中,成功登录后,将打开一个显示用户名的页面。那很好用。但是,当我刷新同一页面而不注销时,会话似乎被破坏,用户名消失。另外,如果我尝试在一个新选项卡中打开页面,它会显示您需要先登录,并且会话似乎丢失或被破坏。在我实现和测试它的前几天,代码运行良好。这个问题是在今天发生的。无法找出错误或问题所在。请帮忙。 这是密码

<?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>

剖面测试

注销 $(文档).ready(函数(){ $(“#注销”)。单击(函数(){ window.open(“index.html”,“_self”); }); });
删除
您正在破坏会话,因此当页面加载时没有会话。当您希望用户注销时,将用户重定向到带有
会话\u destroy
代码的某个页面。

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

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

</script>

$(文档).ready(函数(){
$(“#注销”)。单击(函数(){
window.open(“index.html”,“_self”);
});
});

最近,我发现$\u SESSION['username']的值在页面刷新时丢失。原因可能是什么???session_destroy()删除所有$\u会话变量。正如Gaurav Rai所说,在其他地方运行该功能。