codeigniter session user_data被重置

时间:2015-11-11 03:49:52

标签: php codeigniter

我正在使用Codeigniter数据库会话。我的页面标题上有一个搜索导航,其中包含搜索日期和日期以及文本字段。

我在页面上也有分页。我正在使用自定义控制器(MY_Controller),我在这里设置from和to日期。见下文。

public function __construct()
{
    parent::__construct();

    $this->load->model('News_model');

    $this->set_dates();
}

function set_dates()
{
    if (empty($this->input->post('from_date')))
    {
        $this->session->set_userdata('sel_from_date', date('Y-m-d'));
    }
    else 
    {
        if($_SERVER['REQUEST_METHOD'] == "POST")
        {
            $this->session->set_userdata('sel_from_date', $this->input->post('from_date'));
        }
    }

    if (empty($this->input->post('to_date')))
    {
        $this->session->set_userdata('sel_to_date', date('Y-m-d'));
    }
    else 
    {
        if($_SERVER['REQUEST_METHOD'] == "POST")
        {
            $this->session->set_userdata('sel_to_date', $this->input->post('to_date'));
        }
    }
}

即使我在from和/或to字段中输入日期并单击“提交”,这仍然正常,正确的日期保留在搜索字段中。 然而,当我点击下一页的链接(在分页中)基本上将另一个段添加到URL(即mysite / news / politics / 1 )并加载页面时,会话中的日期user_data被重置。我想也许上面的空白输入日期的逻辑在这个例子中再次被执行但事实并非如此。

HTML:

<div class="form-group">
                        <label for="from_date" class="col-sm-2 control-label">From Date:</label>
                        <div class="col-sm-6">
                            <input type="text" placeholder="From Date" class="form-control" name="from_date" id="from_date" width=10" value="<?php echo $this->session->userdata('sel_from_date'); ?>" />
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="to_date" class="col-sm-2 control-label">To Date:</label>
                        <div class="col-sm-6">
                            <input type="text" placeholder="To Date" class="form-control" name="to_date" id="to_date" value="<?php echo $this->session->userdata('sel_to_date'); ?>" />
                        </div>
                    </div>
                    <div class="form-group">
                        <input type="text" class="form-control" placeholder="Search">
                        <button type="submit" class="btn btn-default" name="go" id="go">Go</button>
                    </div>

2 个答案:

答案 0 :(得分:0)

检查会话变量'sel_from_date'是否已设置。 如果是,请不要再次设置。请在控制器中尝试以下操作:

if($this->session->userdata('sel_from_date') != '')
{
  // Do not set the session variable 'sel_from_date'
}
else
{
   // Execute the function $this->set_dates()
 }    

答案 1 :(得分:0)

我使用以下代码解决了这些问题。

if (empty($this->input->post('from_date')) && !$this->session->userdata('sel_from_date'))
    {
....
}