重新加载页面,保持会话

Posted

技术标签:

【中文标题】重新加载页面,保持会话【英文标题】:Reload page, keep sessions 【发布时间】:2012-08-01 12:09:02 【问题描述】:

我正在尝试开发一个功能,用户可以在其中单击“上一周”/“下周”,这将触发一些 $_SESSION 变量来更改值(日期)。

我在 absence.php 上有这段代码(我知道 PRG 模式没有实现。我不知道如何做到这一点,但仍然保留功能)。

<?php
if (isset($_POST['decrease_date'])) 
    $monday_value = ($_SESSION['sess_mon'] = strftime("%Y-%m-%d", strtotime("$_SESSION['sess_mon'] -1 day")) );

if (isset($_POST['increase_date'])) 
    $monday_value = ($_SESSION['sess_mon'] = strftime("%Y-%m-%d", strtotime("$_SESSION['sess_mon'] +1 day")) );

else 
    $monday_value = ($_SESSION['sess_mon'] = date('Y-m-d', strtotime('Monday this week')) );

?>

 <form action='absence.php' method='post'>
  <input type="hidden" name="decrease_date"/>
  <input type='submit' value='Previous'>
 </form>

<form action='absence.php' method='post'>
 <input type="hidden" name="increase_date"/>
<input type='submit' value='Next'>
</form>

现在我想重新加载页面(使用 jQuery location.reload()-function),但仍然保持 $_SESSIONs 在页面刷新之前处于活动状态。目前这将“重置”,因为没有$_POST

理想情况下,我想将&lt;form action'#'&gt; 发送到另一个页面。但是,当您第一次输入 absence.php 时,日期应该会被重置。

我该怎么做?

【问题讨论】:

【参考方案1】:

改变

session_start();

进入:

if (!isset($_SESSION))
  session_start();

【讨论】:

我很好奇。这对我有什么帮助? 您不会在每次发布表单时都创建新会话 哦,我忘了我根本不需要 session_start(),因为它是从另一个页面继承的。 absence.php 包含在 index.php对不起,我也没有完全明白你的问题,实际上我的回答只是一个评论......:D【参考方案2】:

不是重新加载,你不能只通过jquery提交表单$("form#frmDate").submit();不要忘记给你的表单提供IDfrmDate

这是你要找的吗?

【讨论】:

我认为这不是我想要的。这些变量在 mysql 查询中用于列出行,颜色会根据值而变化,例如数据网格。每当用户编辑一行并单击“保存”时,我都希望重新加载数据。

以上是关于重新加载页面,保持会话的主要内容,如果未能解决你的问题,请参考以下文章

地理位置保持浏览器会话持久

PHP会话系统脚本重新加载页面没有消息[重复]

每当我重新加载页面时,仍会设置取消设置 PHP 会话变量 [重复]

在页面重新加载/刷新时重置会话?

Window.sessionStorage

flutter-保持页面状态(切换页面,页面还在原来的位置,不重新加载接口)