我已将会话应用到我的应用程序中,但我需要允许登录用户使用后退按钮转到上一页。 如何确保会话不会过期并允许用户查看上一页?
这是我的代码
<?php
//Start session
if (session_status() !== PHP_SESSION_ACTIVE) {
session_start();
}
$User = $_SESSION["User"];
//Page content
?>
我已经启动了会话,当我在浏览器上使用后退按钮时,我得到一个读取会话已过期的页面。我不想发生这种情况。
答案 0 :(得分:1)
如果您已正确设置会话管理,则无需执行任何操作。
但是,正确取决于您在会话中的状态以及管理方式。此外,超时仍将适用(正如他们应该的那样)。
答案 1 :(得分:1)
您也可以使用javascript历史记录方法,因此您的会话也保持不变。
<button onclick="goBack()">Go Back</button>
<script>
function goBack() {
window.history.back();
}
</script>
答案 2 :(得分:1)
在每个页面顶部的php中,在开始<html>
标记
<?php session_start(); ?>
<html>
在你的php某处设置你的会话变量注意这个值必须是可序列化的
<?php $_SESSION["variable"] = "value"; ?>
然后,只要您想要访问该会话变量,就可以执行以下操作 AFTER 调用session_start();
<?php echo $_SESSION["variable"]; ?>
如果您以这种方式处理会话,会话变量将在以前和将来的页面上可用。
警告:
取决于从服务器发送的浏览器和标头,当您返回页面时,它会重新加载页面,因此请考虑以下内容:
您在上面发布了代码,首先检查了session_status。这是不正确的。您总是需要session_start();
<?php
//Start session
session_start();
// User is either pulled from the session or is null
$User = $_SESSION["User"] ? !empty($_SESSION["User"]) : NULL;
//Page content
?>
if (session_status() !== PHP_SESSION_ACTIVE) {
的代码仅在某些其他代码(通常在框架中)已经启动会话的情况下才有用。