2016-10-07 7 views
0

Я новичок в кодеригенере. Изучение кодекса с Here. Теперь мне нужно, чтобы кто-то помог продолжить session.Почему я получаю эту ошибку сеанса Codeigniter

//config.php

<pre> <code>  
    $config['sess_driver'] = 'database';  
    $config['sess_save_path'] = 'ci_sessions';  
    $config['sess_cookie_name'] = 'cisessions';  
    $config['sess_expiration'] = 7200;  
    $config['sess_match_ip'] = FALSE;  
    $config['sess_time_to_update'] = 300;  
    $config['sess_regenerate_destroy'] = FALSE;  
</code> </pre> 

// Таблица базы данных


    CREATE TABLE IF NOT EXISTS `ci_sessions` (
     `session_id` varchar(80) NOT NULL, 
     `ip_address` varchar(45) NOT NULL, 
     `user_agent` varchar(120) NOT NULL, 
     `last_activity` int(10) unsigned DEFAULT 0 NOT NULL, 
     `user_data` text, 
     KEY `last_activity` (`last_activity`) 
    ); 

mode_user



    class Model_user extends MY_Model{ 
    protected $_table_name = 'user'; 
    protected $_order_by = 'name'; 
    public $rules = array(
     'email' => array('field' => 'email', 'label' => 'Email', 'rules' => 'trim|required|valid_email|xss_clean'), 
     'password' => array('field' => 'password', 'label' => 'Password', 'rules' => 'trim|required'), 
    ); 

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

    public function login(){ 
     $user = $this->get_by(array(
      'email'  => $this->input->post('email'), 
      'password' => $this->hash($this->input->post('password')), 
     ), TRUE); 
     if(count($user)){ 
      $data = array(
       'name'  => $user->name, 
       'email'  => $user->email, 
       'id'  => $user->id, 
       'loggedin' => TRUE, 
      ); 
      $this->session->set_userdata($data); 
     } 
    } 

    public function logout(){ 
     $this->session->sess_destroy(); 
    } 

    public function loggedin(){ 
     return (bool) $this->session->userdata('loggedin'); 
    } 

    public function hash($string){ 
     return hash('sha512'. $string . config_item('encryption_key')); 
    } 
    } 

контроллер пользователя



    class User extends Backend_Controller{ 
    function __consrtuct(){ 
     parent::__consrtuct(); 
    } 

    public function login(){ 
     $rules = $this->model_user->rules; 
     $this->form_validation->set_rules($rules); 
     if($this->form_validation->run() == TRUE){ 
      //login & redirect 
      $this->model_user->login(); 
     } 
     $this->data['subview'] = 'admin/user/login'; 
     $this->load->view('admin/_layout_modal', $this->data); 
    } 
    } 

Получение ошибки как этот

A PHP Error was encountered 
Severity: Warning 
Message: Unknown: Failed to write session data (user). Please verify that the current setting of session.save_path is correct (ci_sessions) 
Filename: Unknown 
Line Number: 0 
Backtrace: 

Пожалуйста, руководство мне решить эту ошибку

Благодаря

+0

любая причина для сохранения сессии в БД ?? –

+0

@AbdullaNilam: после долгого времени, как у? – devpro

+1

@devpro Изобразительное. Сменить имя. thats y вы не заметили бы меня –

ответ

0

CodeIgniter 3.1.0 документация говорит для создания сеанса таблицы:

CREATE TABLE IF NOT EXISTS `ci_sessions` (
    `id` varchar(40) NOT NULL, 
    `ip_address` varchar(45) NOT NULL, 
    `timestamp` int(10) unsigned DEFAULT 0 NOT NULL, 
    `data` blob NOT NULL, 
    KEY `ci_sessions_timestamp` (`timestamp`) 
); 

// When sess_match_ip = TRUE 
ALTER TABLE ci_sessions ADD PRIMARY KEY (id, ip_address); 

// When sess_match_ip = FALSE 
ALTER TABLE ci_sessions ADD PRIMARY KEY (id); 

Вы также должны упомянуть некоторые ограничения при сохранении сеанса в базе данных:
- Только ваш def можно использовать соединение с базой данных oult (или тот, который вы используете как $ this-> db от ваших контроллеров).
- У вас должен быть включен Query Builder.
- Вы не можете использовать постоянное соединение.
- Вы не можете использовать соединение с включенным параметром cache_on.

Дополнительную информацию можно найти здесь: http://www.codeigniter.com/user_guide/libraries/sessions.html#session-drivers

Возможно подключение к базе данных не настроена правильно или не соответствует конфигурации сеанса?

+0

, когда я изменил 'db_debug' => FALSE. to 'db_debug' => (ОКРУЖАЮЩАЯ СРЕДА!== 'производства') getiing этой ошибки Неизвестного столбец 'данные' в поле 'список' ВЫБРАТЬ '' data' ОТ ci_sessions' где 'id' = '59538fa0a69463b18761e21f07a8c77df968f980' Имя файла: C/Файлы программы (x86) /Ampps/www/arc/system/database/DB_driver.php Номер строки: 691 –

+0

Тогда вам кажется, что вы не используете Codeigniter 3.x - вы используете 2.x: https: // www.codeigniter.com/userguide2/libraries/sessions.html – zuluk

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