Почему мой вход в систему с использованием сеансов CI не позволяет мне извлекать какие-либо данные, которые я сохранял в базе данных - PullRequest
1 голос
/ 13 декабря 2011

У меня есть таблица со следующими столбцами:

session_id       varchar(40)    No      0        
ip_address       varchar(16)    No      0        
user_agent       varchar(50)    No           
last_activity    int(10)        No      0        
user_data        text           No           

Я пытался получить созданные мной сеансы, но они не возвращали никакого значения.
Я также пытался создать их как поля базы данных, иэто тоже было неправильно.
Я также пытался сохранить их в куки, а не в БД, все еще не работал.

это мой PHP-скрипт:

$user_data = array(
                'id' => $row->id,
                'is_logged' => TRUE
            );
$this->session->set_userdata($user_data);

Я пытался получитьэто с помощью этого:

$this->session->userdata('is_logged');/is_logged is an example

Примечание:
Я новичок в Codeigniter.

1 Ответ

2 голосов
/ 13 декабря 2011

Класс сеансов CI позволит вам хранить сеансы в базе данных (обратите внимание, что это не отменяет использование файлов cookie, а просто добавляет дополнительный уровень устойчивости для обеспечения безопасности в случае, если вам необходимо подтвердить идентификатор сеанса).Вот инструкция sql для создания таблицы сеанса.

CREATE TABLE IF NOT EXISTS  `ci_sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL,
    ip_address varchar(16) DEFAULT '0' NOT NULL,
    user_agent varchar(120) NOT NULL,
    last_activity int(10) unsigned DEFAULT 0 NOT NULL,
    user_data text NOT NULL,
    PRIMARY KEY (session_id),
    KEY `last_activity_idx` (`last_activity`)
);

Затем необходимо указать CI использовать базу данных для данных сеанса:

// in /application/config.php
$config['sess_use_database'] = TRUE;

// and what the name of the db table is
$config['sess_table_name'] = 'ci_sessions';

Затем при входе в системусвоего пользователя, вы бы добавили детали к его данным сеанса:

$this->session->set_userdata('id', $user_id);
$this->session->set_userdata('username', $username);
$this->session->set_userdata('email', $email);
$this->session->set_userdata('isLogged', TRUE);

И это то, что вы использовали бы, чтобы увидеть, есть ли у кого-то доступ к странице или ресурсу.

if ($this->session->userdata('isLogged') === TRUE)
{
    // show page
}
else
{
    // show access error
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...