【问题标题】:Codeigniter select box not populating session valueCodeigniter 选择框不填充会话值
【发布时间】:2012-07-14 17:47:45
【问题描述】:

我在使用 Codeigniter 时遇到了session 问题。

我有一个包含选择框的表单来执行搜索。当表单被提交时,搜索条件存储在会话中,一旦用户返回表单,它将用于填充表单字段。在我的本地机器上,它工作正常。但在服务器中,它不适用于选择框。仅清除浏览器缓存后,它就可以工作。
我刚刚回应了会话变量。在表格之外。它拥有正确的数据。在 Firebug 中,它也显示正确的值 - <option selected="selected">foobar</option>。但我在选择框中看不到选定的值。
仅供参考 - 我正在使用以下 CI 表单助手打印选择框。

<?php echo form_dropdown('product', $search_options['product_list'], 
      stripslashes($this->session->userdata('qes_product')), 
      'id="qes_product" tabindex="1"'); 
?>


有什么想法吗?

【问题讨论】:

    标签: php codeigniter session select


    【解决方案1】:

    1) 确保您为会话使用数据库存储而不是 cookie。 Cookie 的大小有限,如果您做错了什么,即不替换值而是不断将它们添加到会话中,那么它可能会被填满。这是您应该研究的其他内容(您在会话中存储的内容)

    2) 不要在视图中使用 $this->session。将所有内容存储在会话中的数组(如 $formdata)中,然后在控制器中检索它并将其传递给您的视图。

    您可以使用$formdata['ques_product']在您的表单中访问它

    如果上述方法不起作用,请尝试在会话配置中更改 sess_expire_on_close 的值。 CI 中似乎有一个奇怪的错误。

    祝你好运!

    【讨论】:

    • 是的,我正在使用数据库存储进行会话。我检查了服务器数据库会话表的搜索值并将其存储。我理解您对 $this->session 使用的建议。为了测试,我在表单模板中使用$this-&gt;session-&gt;all_userdata() 打印了所有会话值。然后,它也没有带来它。仅供参考-我什至给了$config['sess_expiration'] = 0;。正如我之前所说,它只有在刷新浏览器缓存时才有价值。
    • 换个sess_expire_on_close怎么样?如果这没有帮助,我要做的是启用日志记录,然后在所有不同的地方插入log_message('debug', 'Somewhere'. $this-&gt;session-&gt;userdata('qes_product');,从你的控制器、构造函数甚至模型开始。这样你就可以看到它发生了什么。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 2021-08-20
    • 1970-01-01
    • 2016-09-03
    相关资源
    最近更新 更多