【问题标题】:php cache mistakephp缓存错误
【发布时间】:2012-01-05 08:13:32
【问题描述】:

我的控制面板用户中有一个页面,需要密码才能 使用权。

我这样做的顺序是:

  1. 使用我要访问哪个页面的参数转到“密码请求页面”。
  2. 检查密码,如果正确,则使用“散列页面名称”填充会话变量
  3. 重定向到我想访问的页面。
  4. 此页面检查“哈希会话”是否与此“页面名称”匹配
  5. 如果匹配,则清除会话并显示整个页面,如果不匹配则重定向到初始页面。

问题是:在第 4 步,页面有时会读取延迟会话 更新。有时它没有显示任何价值,但很多时候它显示了 正确的值,如果我刷新页面,会话仍然有 正确的散列数据(在第 5 步,如果匹配,我已经清除了会话 变量),怎么办?

我尝试用mysql的数据记录更改会话变量,但是 我得到了同样的结果。 phpmyadmin 显示已经设置的记录,但是 该页面显示没有数据集。否则,在记录删除后, 页面仍然显示之前的记录值。

这是否意味着缓存有问题?我也做了标题没有缓存 如:

    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
    header('Cache-Control: no-store, no-cache, must-revalidate');
    header('Cache-Control: post-check=0, pre-check=0', false);
    header('Pragma: no-cache');

但我得到的结果仍然相同。有什么建议吗?

更新:如果我不断刷新页面,可能刷新 3 或 5 次后,它会显示正确的值。如何使其实时?那么如果session设置了,页面可以直接查看设置的值,如果session清除了,那么页面会询问密码。?

【问题讨论】:

  • 甚至试图查看调试控制台,看看你从哪里读到什么,你有代理吗?
  • 什么问题,为什么页面不能显示会话变量的当前值/mysql记录值?

标签: php caching http-caching


【解决方案1】:

在第 4 步中转储会话: print_r($_SESSION) 以查看它是否已设置。如果没有,您需要在第 2 步进行重定向之前进行设置。

也不要忘记在每个文件上调用 session_start()。

【讨论】:

  • 序列是正确的并且在我的本地主机中工作。但上传时结果不一样。尝试打印会话,它显示的不是当前值。如果我检查了 mysql phpmyadmin,数据是正确的,但与页面结果不同。
  • 你能发布代码吗?尝试检查会话是否存在: echo session_id(); - 如您所知,会话总是对应一个 cookie,如果由于某种原因最初没有设置 cookie,则会话将不存在。
  • 这也可能有帮助: if ($PHPSESSID) print "session exists";否则打印“会话不存在”;
  • 会话存在且有值,但页面上出现的值与当前值不同。我在尝试使用 mysql 作为会话替换时发现了这个问题,当 phpmyadmin 已经显示“b”(新值)时,出现的数据显示“a”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多