我的控制面板用户中有一个页面,需要密码才能访问。
我这样做的顺序是:
- 使用我要访问的页面的参数转到“密码请求页面”。
- 检查密码,如果正确,则用“散列页面名称”填充会话变量
- 重定向到我要访问的页面。
- 此页面检查“哈希会话”是否与此“页面名称”匹配
- 如果匹配,则清除会话并显示整个页面,如果不匹配则重定向到初始页面。
问题是:在第 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 次后,它会显示正确的值。如何使其实时?那么如果会话设置,页面可以直接检查设置的值,如果会话清除,那么页面会询问密码。?