2016-07-01 8 views
1

Ich bin hier völlig stecken, ich habe eine Controller-Login erstellt, die es bekommen, Regeln und Authentifizierung mit DB und am Ende des Codes setzen Sitzung festgelegt. Auch ich habe ein anderes Controller-Dashboard, das Dashboard anzeigt und auch Sitzung verwenden müssen, um zu sehen, ob die Sitzung festgelegt ist, wenn der Benutzer den Controller sonst Umleitung zur Anmeldeseite verwenden kann. das ist es Aber ich kann nicht Sitzung im Dashboard bekommen, was soll ich hier tun?Codeigniter Sitzung in einem anderen Controller nicht abrufen

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Login extends CI_Controller 
{ 

    /** 
    * Login constructor. 
    */ 
    public function __construct() 
    { 
     parent::__construct(); 

     //Load Form helper 
     $this->load->helper('form'); 

     //Load form validation library 
     $this->load->library('form_validation'); 
    } 

    /** 
    *Display Login page 
    */ 
    public function index() 
    { 

     $title['title'] = 'Admin login'; 
     $this->load->view('login', $title); 
    } 


    /** 
    * 
    * Set rules for authentication 
    * 
    * @return bool 
    */ 
    public function rules() 
    { 

     $rules = array(
      array(
       'field' => 'username', 
       'label' => 'Username', 
       'rules' => 'trim|required|xss_clean' 
      ), 
      array(
       'field' => 'password', 
       'label' => 'Password', 
       'rules' => 'trim|required|xss_clean' 
      ), 
      array(
       'field' => 'remember', 
       'label' => 'Remember', 
       'rules' => 'trim|int|xss_clean' 
      ) 
     ); 

     $this->form_validation->set_rules($rules); 

     if ($this->form_validation->run() != FALSE) { 
      $this->authentication(); 
     } else { 

      $title['title'] = 'Admin login'; 
      $this->load->view('login', $title); 
     } 
    } 

    /** 
    * Check if user is exist 
    */ 
    public function authentication() 
    { 

     $data = array(
      'username' => $this->input->post('username', true), 
      'password' => $this->input->post('password', true) 
     ); 

     $this->load->model('userData'); 
     if ($this->userData->getUserData($data) == FALSE) { 

      $title['title'] = 'Admin login'; 
      $this->load->view('login', $title); 
     } else { 

      $this->set_session($data); 
      redirect('dashboard/index'); 
     } 

    } 

    /** 
    * @param $data username|password 
    */ 
    public function set_session($data) 
    { 

     $session_data = array(
      'username' => $data['username'], 
      'login' => true 
     ); 

     $this->session->set_userdata('auth', $session_data); 
    } 

} 

und hier ist Armaturenbrett:

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 


class Dashboard extends CI_Controller{ 

    public function __construct() 
    { 
     parent::__construct(); 

    } 

    /** 
    * Display dashboard 
    */ 
    public function index(){ 


     $array = $this->session->userdata('auth'); 
     $login = $array['login']; 

     if ($login == true) { 
      $title['title'] = 'Dashboard'; 
      $this->template->load('panel/dashboard', $title); 
     }else{ 
      redirect('login/index'); 
     }  
    } 
} 

Antwort

0

Du falschen Ansatz zu tun. Sie können nicht auf $_post Werte außerhalb der Funktion zugreifen. Ebenso brauchen Sie keine authentication() Funktion.

Wenn Sie diese Funktion if ($this->form_validation->run() != FALSE) aufrufen und wenn PASS, fügen Sie hier die `` authentication() `Funktionscodes hinzu. Dann können Sie die Sitzung einstellen.


Beispielcode

$this->form_validation->set_rules($rules); 

if ($this->form_validation->run() != FALSE) { 
    $data = array(
     'username' => $this->input->post('username', true), 
     'password' => $this->input->post('password', true) 
    ); 

    $this->load->model('userData'); 
    if ($this->userData->getUserData($data) == FALSE) { # Uncler this point 

     $title['title'] = 'Admin login'; 
     $this->load->view('login', $title); 
    } else { 

     $this->set_session($data); 
     redirect('dashboard/index'); 
    } 
} else { 

    $title['title'] = 'Admin login'; 
    $this->load->view('login', $title); 
} 
+0

'if ($ this-> userData-> getUserData ($ data) == FALSE)' es ist Ergebnis der Modellklasse, die Daten von db wählen. Aber es gibt einen anderen Punkt hier kann ich Sitzung in Login-Controller mit dieser Methode Echo aber warum es nicht im Dashboard funktioniert? – nima

+0

@nima mach es mir –

+0

ok Ich versuche jetzt, Alter! ;) – nima

Verwandte Themen