PHP-获取会话的先前值?

时间:2018-06-25 08:28:58

标签: php session cookies session-variables session-cookies

基本上,我有一个会话值,该值会定期更新,但是我需要保存该会话的先前值。

这是到目前为止我得到的:

$value = $_GET['value'];
$_SESSION["prev-value"] = $_SESSION["value"];
$_SESSION["value"] = $value;

当然,问题是当我去做<?php echo $_SESSION["prev-value"]; ?>时,它将被新值覆盖,因为我们正在检查它是否等于新值。

我不想将以前的值存储在数据库或文本文件中,那是唯一的方法还是有什么办法可以克服?

旁注:

我只需要最后一个值,所以我不需要保留大量的东西,只需保留最新的值即可。

2 个答案:

答案 0 :(得分:2)

仅当您具有GET参数进行设置时,才执行此操作。从技术上讲,您应该使用POST来更新或更改服务器端(包括会话)中的值。

if (isset($_GET['value'])) {
  $value = $_GET['value'];
  $_SESSION["prev-value"] = $_SESSION["value"];
  $_SESSION["value"] = $value;
}

通过上述方法,除非您拥有/?value=something,否则您的会话值不会受到影响。

更新:在您的注释中,值得尝试将以前的值作为数组。因此,将您的$_SESSION["prev-value"]略微更改为数组。

if (isset($_GET['value'])) {
  $value = $_GET['value'];
  if (!isset($_SESSION["prev-value"]))
    $_SESSION["prev-value"] = array();
  $_SESSION["prev-value"][] = $_SESSION["value"];
  $_SESSION["value"] = $value;
}

这样,您将具有可迭代的先前值的历史记录,并且不需要数据库或文本文件。 :)即使相同的值被设置了太多次,您也可以使用PHP函数array_unique()来获取数组的唯一值,如果您发疯了,请array_reverse()来获取数组的第二个值前一个的[1]值。 ;)

要获得上一个,您可能需要做的是:

$lastValue = array_reverse(array_unique($_SESSION["prev-value"]));
if (count($lastValue) > 1)
  $lastValue = $lastValue[1];
echo $lastValue;

答案 1 :(得分:1)

第一次将以前的值设置为空白。并将代码更改为

$_SESSION["prev-value"] = $_SESSION["value"] ?? '';
$_SESSION["value"] = $_GET['value'];

代码流

$_SESSION["prev-value"]---------------$_SESSION["value"]
                     ""---------------10 ----->First time load
                     10---------------20 ----->Next time load
                     20---------------30 ----->Next time load
                     ......
                     ......