codeigniter sess_destroy() funktioniert nicht richtig,was m ich falsch?

Ich bin ein Neuling in codeigniter. Ich bin mit einem login Formular login als admin. Wenn der admin meldet sich mit dem korrekten Benutzernamen und Passwort er/Sie ist gerichtet auf die home-Seite mit einer session-Variablen.und dann klickt er die Schaltfläche Abmelden die Sitzung soll zerstört werden, und leiten Sie den Benutzer zum log-in-Seite ich.e-log-in-Formular-Seite.

Dem 1. controller ist admin:

<?php
class Admin extends CI_Controller
{
    function index()
    {
        $data['main_content'] = 'admin/log_in';
        $this -> load -> view('includes/admin/admin_template', $data);
    }
    function log_in()
    {
        $this->load->model('admin_model');
        $query = $this -> admin_model -> validate();
        if ($query)//if the user's credentials validated...
        {
            $data = array('user_name' => $this -> input -> post('user_name'), 'is_logged_in' => true);
            $this -> session -> set_userdata($data);
            redirect('admin/home/admin_home');
        } else//incorrect username or password
        {
            $this -> index();
        }
    }
    function log_out()
    {
        $this->session->sess_destroy();
        redirect('/admin/admin','refresh');
    }
}

Dem zweiten controller die Start-controller:

<?php
class Home extends CI_Controller
{
    function __construct()
    {
        parent:: __construct();
        $this->is_logged_in();
    }
    function is_logged_in() 
    {
        $is_logged_in = $this -> session -> userdata('is_logged_in');
        if (!isset($is_logged_in) || $is_logged_in != true)
        {
            $this -> load -> view('admin/forbidden');
        }
    }
    function admin_home()
    {
        $data['main_content'] = 'home_view';
        $this->load->view('admin/home_view');
    }
}

Modell ist admin_model:

<?php
class Admin_model extends CI_Model
{
    function __construct()
    {
        parent:: __construct();
    }
    function validate()
    {
            $this->db->where('user_name',$this->input->post('user_name'));
            $this->db->where('password', $this->input->post('password'));
            $query = $this->db->get('user');
            if($query->num_rows==1)
            {
                return true;
            }
    }
}

Nun, er soll den Benutzer Abmelden und zerstören der session, aber wenn ich auf die zurück-Taste meines Browsers, bekomme ich Seite wieder, die eigentlich nicht zu sein, und die session wird nicht zerstört.
bitte sagen Sie mir, was mache ich hier falsch. Ich bin mit codeigniter 2.1.0.

  • Nach dem drücken der zurück-Taste, werden Sie beim abrufen einer Seite aus dem cache? Oder wenn du F5 sieht die Seite neu laden und zeigen Ihnen angemeldet?
  • ja, es funktioniert,sogar nach dem neu laden, zeigt mir angemeldet
  • wenn Sie ziehen Sie sich einen "sicheren" Seite in einem anderen browser (keine session-Daten) kommst du auch?
  • Ist ein Fehler Aufgetreten, die Aktion, Die Sie angefordert haben, ist nicht erlaubt.---diese Fehlermeldung wird angezeigt, wenn ich dies auch tun.
  • ist, dass der Fehler der Ausgabe von $this -> load -> view('admin/forbidden'); Sie müssen sich klar sein über diese Dinge.
  • Nein, das ist das eine. wo muss ich die aktivieren der profiler?
  • dann Ihre login kaputt ist irgendwo, Sie haben einige fragwürdige code und controller-Struktur, müssen Sie ziehen Sie Ihre function log_in() aus dem controller, sollte in eine Bibliothek, werfen Sie einen Blick auf tank_auth, um zu sehen, wie es zu tun richtig: konyukhov.com/soft/tank_auth
  • okay, ich danke Ihnen für Ihre Hilfe. ich lassen u wissen, ob ich diese beheben können 🙂

InformationsquelleAutor Shabib | 2012-01-26
Schreibe einen Kommentar