Codeigniter Oturum veritabanı

3 Cevap php

Ben, bir web sitesi ile kullanıcı etkileşimlerini hatırlar Örneğin benim site kullanıcıların kendi navigasyon sistemini inşa etmek için izin veren bir sistem oluşturmaya çalışıyorum, ama ben sistem kullanıcı zorunda kalmadan seçim navigasyon sistemini hatırlamak mümkün olmak istiyorum kaydolmak, ben bunlar için oturumlar / tanımlama kullanmanız gerekir varsayalım, ve daha ben tarayıcı kapandığında onlar geçilmek yok gibi (Ben onlar bir süre sonra sona biliyorum) çerezleri kullanmak gerekir varsayılabilir.

Yani CodeIgniter session kütüphanesini kullanarak kurmak ve oturum kimlikleri veritabanına kaydederek sahibiz. Ne bilmeniz gereken kullanıcı daha sonra ben gerekiyor kullanıcıya blog gezinti seçerse nasıl oturumları ve çerezleri kullanarak, örneğin, kullanıcı navigasyon seçim kaydedebilirsiniz böylece onlar siteye gelecek sefere, blog navigasyon olduğunu kaydetmek kullanılır. Birisi bana doğru yönde işaret misiniz? Kılavuzun beni işaret etmeyin. Ben çerez yardımcısı denedim ve deniyorum ne olursa olsun, çerez set olmaz.

3 Cevap

Ben manuel işaret değil istedi biliyorum ama gerçekten size cevap verecektir. Sen ne yapmak istediğinizi yapmak için bir çerez ile doğrudan etkileşim gerekmez, sessions sizin için bu kolu. Bu yüzden uzun süre herhangi bir hassas verileri kaydetme değil gibi, kullanıcının bilgisayarında bir cookie için oturum verileri kaydetmek hangi onların varsayılan olarak oturum ayarlarını bırakabilirsiniz ancak zaman aşımı genişletilmiş sağlamak için küçük bir ayar yapmak isteyeceksiniz.

Yani önce ilk şey, okumak: Session Class : CodeIgniter User Guide

Sonra oturumu kütüphane yükleyebilirsiniz:

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

Ve oturuma verileri kaydetmek:

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

Sonra sonra kullanarak bunu okuyun:

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

Ayrıca oturumuna numaraları, sınıfları ve dizileri kaydedebilir ve verileri okurken tekrar yeniden inşa edecektir.

Son bir şey, oturum $config['sess_expiration'] olması ile satırı değiştirmek, config, iki saat sonra sona olmadığından emin olmak için:

$config['sess_expiration'] = 0;

Bu oturum süresi dolmaz sağlayacaktır.

Kullandığımız oturum temizlemek için:

$this->session->unset_userdata('navigation_choice_a');
  1. Müşteri bir navigasyon sistemi seçtiğinde, size veritabanında müşterileri navigasyon seçeneklerini kaydetmeniz gerekir.

  2. Kullanmak oturum

  3. Veritabanından veri çekme.

Ben bir kontrol böyle müşteri bilgileri çekin.

...
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ü / girişiniz

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

Ve çıkış

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

    //destroy the session
    session_destroy(); 

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