База данных Codeigniter Session - PullRequest
       8

База данных Codeigniter Session

5 голосов
/ 14 января 2010

Я пытаюсь создать систему, которая запоминает взаимодействия пользователя с веб-сайтом, например, мой сайт позволяет пользователям создавать собственную навигационную систему, но я хочу, чтобы система могла запоминать систему навигации, которую они выбирают, без пользователь должен зарегистрироваться, я предполагаю, что мне нужно использовать сеансы / файлы cookie для них, и, кроме того, я предполагаю, что мне нужно будет использовать файлы cookie, поскольку они не истекают при закрытии браузера (я знаю, что они истекают через некоторое время) ,

Итак, я настроил использование библиотеки сеансов codeigniter и сохраняю идентификаторы сеансов в базе данных. Что мне нужно знать, так это как с помощью сеансов и файлов cookie сохранить выбор пользовательской навигации, например, если пользователь выбирает пользователя для навигации по блогу, тогда мне нужно иметь возможность сохранить его, чтобы в следующий раз, когда они заходят на сайт, навигация по блогу используемый. Может ли кто-нибудь, пожалуйста, указать мне в правильном направлении? Пожалуйста, не указывайте мне на руководство. Я пробовал помощник по cookie, и что бы я ни пытался, cookie не будет установлен.

Ответы [ 3 ]

3 голосов
/ 15 января 2010

Я знаю, что вы просили не указывать на руководство, но оно действительно даст вам ответы. Вам не нужно напрямую взаимодействовать с cookie-файлом, чтобы делать то, что вы хотите сделать, сеансы справятся с этим за вас. Пока вы не сохраняете какие-либо конфиденциальные данные, вы можете оставить настройки сеанса по умолчанию, что позволит сохранить данные сеанса в файле cookie на компьютере пользователя, но вы захотите внести небольшую корректировку, чтобы увеличить время ожидания. 1003 *

Итак, обо всем по порядку, прочитайте: Класс сеанса: Руководство пользователя CodeIgniter

Затем вы можете загрузить библиотеку сеансов:

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

И сохранить данные в сеансе:

$this->session->set_userdata("navigation_choice_a", "navigation_value_a");

Затем прочитайте это позже, используя:

$this->session->userdata("navigation_choice_a"); 
// Will return "navigation_value_a"

Вы также можете сохранять числа, классы и массивы в сеансе, и они будут восстанавливаться при чтении данных.

И последнее: чтобы срок действия сессии не истек через два часа, в вашей конфигурации измените строку с $config['sess_expiration'] на:

$config['sess_expiration'] = 0;

Это гарантирует, что сеанс не истекает.

1 голос
/ 06 марта 2012

Для очистки сессии мы используем:

$this->session->unset_userdata('navigation_choice_a');
0 голосов
/ 14 января 2010
  1. Когда клиент выбирает навигационную систему, вам необходимо сохранить выбор навигации клиента в базе данных.

  2. Использовать вход в систему.

  3. Извлечение данных из базы данных.

Я извлекаю информацию о клиенте, как это, в контроллере.

...
if(isset($_SESSION['customer_id'])){
        $data['fname'] = $_SESSION['customer_first_name'];
        $data['lname'] = $_SESSION['customer_last_name'];
        $data['telephone'] = $_SESSION['phone_number'];
        $data['email'] = $_SESSION['email'];
        $data['address'] = $_SESSION['address'];
        $data['city'] = $_SESSION['city'];
        $data['pcode'] = $_SESSION['post_code'];
    }

    $this->load->vars($data);
    $this->load->view('welcome/template'); 

Это мой контроллер входа /логин

function login(){
    // $data['loggedin']=0;
    if ($this->input->post('email')){
        $e = $this->input->post('email');
        $pw = $this->input->post('password');
        $this->MCustomers->verifyCustomer($e,$pw);
        if (isset($_SESSION['customer_id'])){
            // $data['loggedin']=$_SESSION['customer_id'];
            $this->session->set_flashdata('msg', 'You are logged in!');
            redirect('welcome/login','refresh');
        }

        $this->session->set_flashdata('msg', 'Sorry, your email or password is incorrect!');
        redirect('welcome/login','refresh');
    }       


    $data['main'] = 'welcome/customerlogin';// this is using views/login.php
    $data['title'] = "Customer Login";

    $this->load->vars($data);
    $this->load->view('welcome/template');  
  }

и выход

function logout(){
    // or this would remove all the variable in the session
    session_unset();

    //destroy the session
    session_destroy(); 

    redirect('welcome/index','refresh');    
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...