【发布时间】:2019-02-17 10:42:35
【问题描述】:
目标是当用户使用 session_start() 从页面上的 6 个选择下拉框中选择数据库搜索过滤条件并且 SESSION 变量设置为 6 个选择框值时,刷新后在页面之间保留一些数据用户选择,因为单击搜索按钮调用 Laravel 控制器操作,其中 SESSION 是 session_start() 正在开始,并且正在为 SESSION 设置 6 个选择框变量。
目标是从单击搜索按钮时填充的会话变量中重置选择框,保留用户选择的选择框选择条件,这样他们就不必再次重新选择 6 个选择框。这些选择框选择值存储在会话变量中;
在返回成功搜索后刷新时,会在 masterlayout.blade html 部分中读取 SESSION 变量,以便以编程方式重新选择用户在使用 masterlayout.blade 呈现重新运行页面时输入的先前搜索过滤器选择,包括导航刀片。
在 Laravel 模板系统的 masterlayout.blade(包括具有选择框的 nav.blade)中,我在刷新用户搜索时读取这些 SESSION 变量,然后从控制器设置 SESSION 变量从按钮单击调用将选择框重置为 SESSION 变量中的值。
但是,masterlayout.blade 模板是从其他页面调用的,因为它和 search-nav 出现在可能用于搜索或不用于搜索的其他页面上,在用户进行过滤搜索之前或之后。
问题是当请求其他页面时,即使在搜索之后,SESSION 变量似乎也不可用,重置为空或其他什么---我无法弄清楚,因为我没有破坏会话,它们应该可以从设置后的任何页面。
但是当请求其他页面时,我得到了 _SESSION 变量不可用错误。
如果您知道如何解决此问题,请告诉我。
如果您知道如何以更好的方式在页面之间保留选择框值,请告诉我。我不想让 db 执行此操作,但也许有一种 javascript 方法可以跨页面保留变量。
谢谢
【问题讨论】:
-
听起来你正在覆盖你的值或没有调用 session_write_close()
-
您没有向我们展示任何代码,因此任何答案充其量只是猜测。请编辑您的问题并提供Minimal, Complete, and Verifiable example,以便我们尝试帮助您。
-
“也许有一种 javascript 方法可以跨页面保留变量”——是的,与跨页面存储会话密钥的方式相同:cookie。现代浏览器还提供 Web Storage API 用于访问 localStorage 和 sessionStorage 客户端。