2010-01-14 38 views
5

Estoy tratando de construir un sistema que recuerda las interacciones del usuario con un sitio web, por ejemplo, mi sitio permite a los usuarios construir su propio sistema de navegación, pero quiero que el sistema pueda recordar el sistema de navegación que elegir sin que el usuario tenga que registrarse, supongo que necesito usar sesiones/cookies para estos, y además supongo que necesitaría usar cookies ya que no caducan cuando el navegador se cierra (sé que caducan después de un período) de tiempo).Codeigniter Base de datos de sesión

Así que configuré usando la biblioteca de sesión codeigniter y guardo los identificadores de sesión en la base de datos. Lo que necesito saber es cómo puede el uso de sesiones y cookies guardar la opción de navegación del usuario, por ejemplo, si el usuario elige usar la navegación del blog, entonces debo poder guardarla para que la próxima vez que accedan al sitio, la navegación del blog sea usado. ¿Podría alguien señalarme en la dirección correcta? Por favor, no me señale en el manual. He probado el cookie helper y, sea lo que sea que intente, la cookie no se configurará.

Respuesta

3

Sé que pidió no ser señalado en el manual, pero lo que realmente le dará las respuestas. No debería necesitar interactuar directamente con una cookie para hacer lo que quiere hacer, sessions maneje esto por usted. Siempre que no guarde datos confidenciales, puede dejar la configuración predeterminada de la sesión, lo que guardará los datos de la sesión en una cookie en la máquina del usuario, pero querrá hacer un pequeño ajuste para garantizar que el tiempo de espera se extienda.

Así que lo primero es lo primero, debe decir: Session Class : CodeIgniter User Guide

, puede cargar la biblioteca de sesión:

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

y guardar los datos de la sesión:

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

luego leerlo más tarde utilizando:

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

También puede guardar números, clases y matrices en la sesión y se reconstruirán nuevamente al leer los datos.

Una última cosa, para asegurarse de que la sesión no expira después de dos horas, en su configuración, cambie la línea con $config['sess_expiration'] ser:

$config['sess_expiration'] = 0; 

Esto asegurará que la sesión no expira.

0
  1. Cuando el cliente elige un sistema de navegación, debe guardar las opciones de navegación de los clientes en la base de datos.

  2. uso Entrar.

  3. extraer los datos de la base de datos.

Extraigo la información del cliente de esta manera en un controlador.

... 
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'); 

Ésta es mi controlador de entrada/Login

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

y cierre de sesión

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

    //destroy the session 
    session_destroy(); 

    redirect('welcome/index','refresh');  
} 
1

Para borrar la sesión que utiliza:

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