我的在线考试管理系统有一个奇怪的问题。
测试表单(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 时间,仅使用 这里提出的解决方案
关于php - 如何在不重新加载页面的情况下保持 session 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12597176/