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