2010-01-14 3 views
5

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

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

ответ

3

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

Так первые вещи первой, читайте: Session Class : CodeIgniter User Guide

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

$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; 

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

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

Чтобы очистить сессию мы используем:

$this->session->unset_userdata('navigation_choice_a');