PhP session 不使用 AJAX 刷新

标签 php jquery ajax session

我四处寻找这个问题的答案。我有一个播放长视频文件的网站。我不希望用户在观看视频时超时,因此我想对刷新 session 的计时器进行 AJAX 调用。许多人告诉我,在刷新页面上对 session 进行任何操作就足够了,但没有任何效果。我将 php session 过期时间设置为 30 分钟。我宁愿不再增加这个。

这是我的 jquery/AJAX 调用

//var time = 20000; // for live
var time = 10000; // for testing

// loop to handle refresh session
setInterval(function() {

    // ajax call to get image
    $.ajax({
        url: 'refreshSession.php',
        cache: false,
        async: false,
        type: "POST",
        data: {},
        success: function(){},
        error: function(request, status, error){
            alert('Login Session Error: ' + request.responseText + '  STATUS: ' + status + '  ERROR: '+error);
        }
    }); 
}, time);

AJAX 调用运行良好并且循环正确。这是我需要保持 session 事件的refreshSession.php 文件。

<?php
include_once("configure.php");

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

请注意,configure.php 文件确实调用了 session_start();我正在将 session ID 和其他信息写入文件,并且正在写入正确的信息。所以我知道这个 php 文件正在读取 session 变量。

但是,30 分钟后,我退出并重置 session 。我有什么遗漏的吗?

最佳答案

不知道您是否找到了这个问题的解决方案,但是我也遇到了这个问题,并且能够通过更新 session cookie 到期时间来解决它。

您需要了解 session 是根据服务器设置的 cookie 来维护的。当您的主页加载时,响应 header 会设置带有到期日期的 cookie。为了增加您的 session 到期时间,需要增加此 cookie 到期时间。

Set-Cookie:PHPSESSID=xxxxxxxxxxxxxxx; expires=Thu, 04-Aug-2016 10:22:20 GMT; Max-Age=900;

因此您需要更新 session cookie 并延长过期时间。使用 setcookie() 来完成此操作。

<?php session_start();
setcookie("PHPSESSID", session_id(), time() + ini_get("session.cookie_lifetime"));

include_once("configure.php");

您还可以使用session_regenerate_id()。这将完成更新 session ID 和过期时间的任务。这也将防止 session 劫持和 session 固定。

关于PhP session 不使用 AJAX 刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24003167/

相关文章:

php - MySQL 搜索一个

javascript - 使用ajax响应替换html中的文本

javascript - 在 PHP 中使用 Jquery 和 Ajax 的动态依赖选择框

php - 无需数据库交互的动态状态更新

php - 我应该将 PHPDoc 中的 @throws 添加到使用抛出异常的函数的函数中吗?

javascript - 折叠后隐藏按钮在 Bootstrap 中切换

jquery - Div 从相对到固定

javascript - 如何使用 nvd3 触发调整大小事件?

javascript - 如何找出变量的大小(以 KB 为单位)以确保 ajax GET 请求不会太大?

php - 如何在 Magento 中获取当前主题名称