2014-11-28 2 views
1

У меня проблема с сеансом flashdata. никогда не отображается сообщение, содержащее сеанс. Я прочитал много сообщений на странице. но я не нашел решение проблемысеанс flashdata не работает корректно в codeigniter 2.2

У меня есть эти маршруты:

//index is a subfolder into the controllers folder 
//user is a controller 
$route['login']    = 'index/user/showLogin'; 
$route['do_login']   = 'index/user/doLogin'; 
$route['register']   = 'index/user/showRegister'; 
$route['do_register']  = 'index/user/doRegister'; 

User.php контроллер:

public function showRegister() 
{ 
    $this->template->set('title', 'test register'); 
    $this->template->load('template', 'index/register', $data); 
} 

public function doRegister() 
{ 
    $this->form_validation->set_rules('email',  'Email',    'required|trim|max_length[30]|xss_clean|valid_email|is_unique[users.email]|'); 
    $this->form_validation->set_rules('password', 'Password',   'required|trim|min_length[6]|max_length[20]|xss_clean|alpha_dash'); 
    $this->form_validation->set_rules('rrpassword', 'Re Password', 'required|trim|min_length[6]|max_length[20]|xss_clean|matches[password]|alpha_dash'); 

    if($this->form_validation->run() == FALSE) 
    { 
    $this->showRegister(); 
    } 
    else 
    { 
     $email  = $this->input->post('email'); 
     $pass  = $this->input->post('password'); 
     $password = $this->bcrypt->hash_password($pass); 

     // check if the password was encrypted 
     if ($this->bcrypt->check_password($pass, $password)) 
     { 
      $data =array(
       'email'  => $email, 
       'password' => $password, 
      ); 

      $insert = $this->user_model->register($data); 

      if(!$insert) 
      { 
       echo 'error'; 
      } 
      $this->session->set_flashdata('info', 'registered'); 
      redirect('login', 'refresh'); 
     } 
     else 
     { 
      $this->session->set_flashdata('info', 'Oops.. error...'); 
      redirect(base_url('login'), 'refresh'); 
     } 
    } 
    } 

для отображения сообщений я сделать это в представлении «Логин ":

<div class="alert alert-info alert-dismissible" role="alert"> 
    <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> 
    Test: <?php echo $this->session->flashdata('info'); ?> 
</div> 

Но никогда не печатается сообщение. i Пробовал это:

$this->session->set_flashdata('info', 'test......'); 
$this->session->keep_flashdata('info'); 
redirect('login', 'refresh'); 

Но не работает. Также добавьте favicon.ico в корневую папку, но не работает. Я пытаюсь исправить это несколько часов назад. Это может быть версия PHP?

ответ

0

Вы загружаете библиотеку session. Я думаю, что session библиотека по умолчанию не загружена.

попытка загрузки session библиотека в вашей функции, прежде чем звонить в flashdata или загрузки библиотеки сеанса внутри библиотеки сеанса constructor

$this->load->library('session'); 

или добавить в config/autoload.php

+1

Очевидно уже настроил файл автозагрузку. Я не так noob haha ​​ – OsquiB

+0

@OsquiB ok Тогда сделай это сам –

+0

Я загрузил библиотеку в конструктор и не работал – OsquiB

Смежные вопросы