2010-01-14 25 views
5

Kullanıcıların bir web sitesiyle etkileşimlerini hatırlayan bir sistem kurmaya çalışıyorum, örneğin sitem kullanıcılar kendi navigasyon sistemini kurmaya izin veriyor, ancak sistemin navigasyon sisteminin sistemini hatırlamasını istiyorum. Kullanıcı kayıt olmak zorunda kalmadan seçerim, bunun için oturumları/çerezleri kullanmam gerektiğini varsayar ve daha sonra tarayıcıyı kapandığında süreleri dolmadığı için çerezleri kullanmam gerektiğini varsayabilirim (bir süre sonra sona ereceklerini biliyorum zamanın).Codeigniter Oturum veritabanı

Kod düzenleyici oturum kitaplığını kullanarak ayarlamayı ve oturum kimlikleri veritabanına kaydetmeyi sağladım. Bilmem gereken şey, oturumları ve çerezleri kullanarak kullanıcının navigasyon seçimini nasıl kaydedebileceğidir. Örneğin, kullanıcı blog gezintisini kullanmayı seçerse, siteye bir dahaki sefere gelsin, blog navigasyonu Kullanılmış. Birisi beni doğru yöne yönlendirebilir mi? Lütfen bana kılavuzda gösterme. Kurabiye yardımcısını denedim ve denediğim her ne olursa olsun, çerez kurulamayacak. Müşteri bir navigasyon sistemine seçtiğinde

cevap

3

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

giriş ve çıkış olduğunu. Yapmak istediğiniz şeyi yapmak için doğrudan bir çerezle etkileşime girmeniz gerekmemelidir, sessions bunu sizin için halleder. Herhangi bir hassas veri kaydetmediğiniz sürece, oturum ayarlarını varsayılan olarak bırakabilirsiniz; bu, oturum verilerini kullanıcı makinesindeki bir çereze kaydedecektir, ancak zaman aşımı süresini uzatmak için küçük bir ayar yapmak isteyeceksiniz.

Yani ilk şeylerden ilk, okuyun: Session Class : CodeIgniter User Guide

Sonra oturumu kitaplığını yükleyebilirsiniz:

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

Ve oturumuna verileri kaydetmek: O zaman sonra okunan

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

kullanarak:

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

Ayrıca sayıları, sınıfları ve dizileri oturuma kaydedebilir ve verileri okurken tekrar yeniden oluşturabilirsiniz.

Son bir şey, oturum, senin config, iki saat sonra sona olmaya $config['sess_expiration'] satırı değişmemesini sağlamak için:

$config['sess_expiration'] = 0; 

Bu oturum aşımına uğramayacak sağlayacaktır.

0
  1. , sen veritabanında müşterileri navigasyon seçeneklerini kaydetmek gerekir. içinde

  2. kullanın günlüğü.

  3. veritabanından veri çekin.

Müşteri bilgilerini bir denetleyicide böyle çekiyorum.

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

Bu benim giriş kontrolörü/I manuel işaret açıklanmasını istemeyen ama gerçekten cevapları verecektir biliyorum

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

    //destroy the session 
    session_destroy(); 

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

oturumu temizlemek için kullandığımız:

$this->session->unset_userdata('navigation_choice_a'); 
İlgili konular