сбрасываются user_data сессии codeigniter

1

Я использую сеанс базы данных Codeigniter. У меня есть поисковая навигация в заголовке моей страницы, которая содержит поиск с и по дате и текстовое поле.

У меня также есть разбиение на страницы на странице. Я использую настраиваемый контроллер (MY_Controller), и я устанавливаю здесь и из дат. Смотри ниже.

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'));
        }
    }
}

Это прекрасно работает, даже когда я вводил даты в поля и/или в поле и нажимаю "Отправить", правильные даты остаются в полях поиска. Однако, когда я нажимаю на ссылку для следующей страницы (в разбивке на страницы), которая в основном добавляет другой сегмент к URL-адресу (т.е. mysite/news/policy/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>
Теги:
codeigniter

2 ответа

0

Я решил проблемы со следующим кодом.

if (empty($this->input->post('from_date')) && !$this->session->userdata('sel_from_date'))
    {
....
}
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()
 }    

Ещё вопросы

Сообщество Overcoder
Наверх
Меню