2010-01-14 7 views
5

Ich versuche ein System zu bauen, erinnert sich die Interaktionen des Benutzers mit einer Website, zum Beispiel meine Website ermöglicht den Benutzern, ihr eigenes Navigationssystem zu bauen, aber ich möchte das System in der Lage sein, sich das Navigationssystem zu merken Wählen Sie, ohne dass der Benutzer sich anmelden muss. Ich nehme an, dass ich Sessions/Cookies für diese verwenden muss. Außerdem würde ich davon ausgehen, dass ich Cookies verwenden muss, da sie beim Schließen des Browsers nicht ablaufen (ich weiß, dass sie nach einer bestimmten Zeit ablaufen) von Zeit).Codeigniter Sitzungsdatenbank

Also habe ich eingerichtet mit der codeigniter Session-Bibliothek und haben die Sitzung IDs speichern in der Datenbank. Was ich wissen muss ist, wie kann die Verwendung von Sitzungen und Cookies speichern die Benutzer Navigation Wahl, zum Beispiel, wenn der Benutzer wählt die Blog-Navigation Benutzer dann muss ich speichern können, so dass das nächste Mal, wenn sie auf die Website kommen, die Blog-Navigation ist benutzt. Könnte mir bitte jemand in die richtige Richtung zeigen? Bitte weisen Sie mich nicht auf das Handbuch. Ich habe den Cookie-Helfer ausprobiert und was auch immer ich versuche, der Cookie wird nicht gesetzt.

Antwort

3

Ich weiß, dass Sie gebeten, nicht im Handbuch hingewiesen werden, aber es wird Ihnen wirklich die Antworten geben. Sie sollten nicht direkt mit einem Cookie interagieren müssen, um das zu tun, was Sie tun möchten, behandeln dies für Sie. Solange Sie keine vertraulichen Daten speichern, können Sie die Sitzungseinstellungen auf der Standardeinstellung belassen, wodurch die Sitzungsdaten in einem Cookie auf dem Computer des Benutzers gespeichert werden. Sie sollten jedoch eine kleine Anpassung vornehmen, um sicherzustellen, dass das Zeitlimit verlängert wird.

Also das Wichtigste zuerst, lesen: Session Class : CodeIgniter User Guide

Dann können Sie die Sitzung Bibliothek laden:

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

und Daten an die Sitzung speichern:

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

es dann später ausgelesen Verwenden:

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

Sie können auch Nummern, Klassen und Arrays in der Sitzung speichern und sie werden beim Lesen der Daten erneut rekonstruiert.

Eine letzte Sache, um sicherzustellen, dass die Sitzung nicht nach zwei Stunden nicht verfallen, in der Config, ändern Sie die Zeile mit $config['sess_expiration'] zu sein:

$config['sess_expiration'] = 0; 

Dies wird sicherstellen, dass die Sitzung nicht abläuft.

0
  1. Wenn der Kunde ein Navigationssystem auswählt, müssen Sie die Navigationsoptionen des Kunden in der Datenbank speichern.

  2. Verwenden Anmeldung.

  3. die Daten aus der Datenbank ziehen.

Ich ziehe Kunden Informationen wie dies in einem Controller.

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

Dies ist mein Login-Controller/anmelden

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

und Abmelde

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

    //destroy the session 
    session_destroy(); 

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

die Sitzung löschen wir verwenden:

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