如何让用户返回PHP页面?

时间:2015-05-26 13:25:39

标签: php

我已将会话应用到我的应用程序中,但我需要允许登录用户使用后退按钮转到上一页。 如何确保会话不会过期并允许用户查看上一页?

这是我的代码

<?php
//Start session
    if (session_status() !== PHP_SESSION_ACTIVE) {
    session_start();
}
$User = $_SESSION["User"];
//Page content
?>

我已经启动了会话,当我在浏览器上使用后退按钮时,我得到一个读取会话已过期的页面。我不想发生这种情况。

3 个答案:

答案 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"]; ?>

如果您以这种方式处理会话,会话变量将在以前和将来的页面上可用。

警告:

取决于从服务器发送的浏览器和标头,当您返回页面时,它会重新加载页面,因此请考虑以下内容:

  1. 用户转到页面并且没有设置会话变量
  2. 用户执行设置会话变量并将其发送到第二页的操作
  3. 用户点击后退按钮
    • 向用户显示第一页的会话前缓存版本
  4. 用户刷新页面
  5. 用户现在可以看到第一页w / session variable set
  6. 打嗝的原因是有些浏览器并不总是在后退按钮上发出新请求,有时它会从浏览器缓存中加载。阅读这个答案的最后:https://stackoverflow.com/a/1313941/884453

    修改

    您在上面发布了代码,首先检查了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) {的代码仅在某些其他代码(通常在框架中)已经启动会话的情况下才有用。