php - 如何在不重新加载页面的情况下保持 session 事件?

标签 php session cookies

我的在线考试管理系统有一个奇怪的问题。

测试表单(test.php)中的部分用户需要很长时间才能回答问题并提交表单。

提交表单后 session 过期,用户必须重新登录

这不是代码问题

我把这个值设置在所有页面的顶部

ini_set('session.gc_maxlifetime', 18000);

有没有办法每 10 分钟刷新一次 session 而不重新加载测试表单中的页面以防止 session 过期?

请帮帮我

谢谢

最佳答案

您可以使用 javascript XHR,或者其他人称之为 AJAX。

使用 ajax,您可以调用每 10 分钟刷新一次 session 的 php 脚本。 :)


这是我所能达到的“精确”。

javascript

var refreshSn = function ()
{
    var time = 600000; // 10 mins
    setTimeout(
        function ()
        {
        $.ajax({
           url: 'refresh_session.php',
           cache: false,
           complete: function () {refreshSn();}
        });
    },
    time
);
};

// Call in page
refreshSn()

刷新 session .php

<?php
session_start();

// store session data
if (isset($_SESSION['id']))
$_SESSION['id'] = $_SESSION['id']; // or if you have any algo.
?>

无论如何,另一种解决方案是延长测试页的 session 时间,仅使用 这里提出的解决方案

How do I expire a PHP session after 30 minutes?

关于php - 如何在不重新加载页面的情况下保持 session 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12597176/

相关文章:

django - 基于 cookie 在两个服务器之间路由流量

ios - 在 UIWebView 中启用 Cookie

android - Google Fit API Sleep 在 session 中插入并读取 DataPoint

session - 如何管理 Web 集群中的 session 变量?

php - 从 PHP 的 while 循环中获取随机数组

javascript - PHP 使用 javascript (codeigniter) 以动态形式进入数据库

c# - 要增加的 Int session 变量?

cookies - 为什么非法 cookie 由浏览器发送并由网络服务器接收(rfc 2109、2965)?

php - 如何使用php DOM文件?

php - Yii2.0 如何通过 POST API 上传文件到服务器?