2017-12-21 3 views
0

Ich habe ein Projekt in Codeigniter erstellt. Mein Problem ist, wenn ich mich anmelde, Auth-Controller zeigt den Wert an, der in Sitzung $ this-> session-> userdata ("logged_in") gesetzt ist, aber es wird nicht zum Dashboard umgeleitet.Sitzung ist nicht nach Umleitung in Codeigniter

Ich habe auch die PHP-Version auf dem Live-Server von PHP 7.1 zu PHP 5.6 geändert, aber es funktioniert immer noch nicht. Session funktioniert perfekt auf lokalen Server mit XAMPP aber nicht funktioniert auf Live-Server

Auth_model

public function Authentification() { 
    $notif = array(); 
    $email = $this->input->post('email',TRUE); 
    $password = Utils::hash('sha1', $this->input->post('password'), AUTH_SALT); 

    $this->db->select('*'); 
    $this->db->from('users'); 
    $this->db->where('email', $email); 
    $this->db->where('password', $password); 
    $this->db->limit(1); 

    $query = $this->db->get(); 

    if ($query->num_rows() == 1) { 
     $row = $query->row(); 
     if ($row->is_active != 1) { 
      $notif['message'] = 'Your account is disabled !'; 
      $notif['type'] = 'warning'; 
     } else { 
      $sess_data = array(
       'users_id' => $row->users_id, 
       'first_name' => $row->first_name, 
       'email' => $row->email 
      ); 
      $this->session->set_userdata('logged_in', $sess_data); 

     } 
    } else { 
     $notif['message'] = 'Username or password incorrect !'; 
     $notif['type'] = 'danger'; 
    } 

    return $notif; 
} 

Auth Controller

class Auth extends CI_Controller { 

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

    Utils::no_cache(); 
    if ($this->session->userdata('logged_in')) { 
     redirect(base_url('dashboard')); 
     exit; 
    } 
} 



public function index() { 
     redirect(base_url('home')); 
    } 

public function login() { 
    $data['title'] = 'Login'; 
    $this->load->model('auth_model'); 

    if (count($_POST)) { 
     $this->load->helper('security'); 
     $this->form_validation->set_rules('email', 'Email address', 'trim|required|valid_email|xss_clean'); 
     $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean'); 

     if ($this->form_validation->run() == false) { 
      // $data['notif']['message'] = validation_errors(); 
      // $data['notif']['type'] = 'danger'; 
       $status = validation_errors(); 
      if ($this->input->is_ajax_request()) { 
       echo json_encode($status); 
       exit; 
      } 
     } 
     else { 
      $data['notif'] = $this->auth_model->Authentification(); 
        // it show the result here but not redirect to dashboard 
      // print_r($this->session->userdata("logged_in")); 
     //   die("auth/login"); 
     } 
    } 


    if ($this->session->userdata('logged_in')) { 
     redirect(base_url('dashboard')); 
     exit; 
    } 

    /* 
    * Load view 
    */ 
    $this->load->view('includes/header', $data); 
    $this->load->view('home/index'); 
    $this->load->view('includes/footer'); 
} 

Armaturenbrett

class Dashboard extends CI_Controller { 

var $session_user; 

function __construct() { 
    parent::__construct(); 
     $this->load->model('auth_model'); 
    $this->load->helper('tool_helper'); 

    Utils::no_cache(); 
    if (!$this->session->userdata('logged_in')) { 
     redirect(base_url('home')); 
     exit; 
    } 
    $this->session_user = $this->session->userdata('logged_in'); 

} 

/* 
* 
*/ 

public function index() { 
    $data['title'] = 'Dashboard'; 
    $data['session_user'] = $this->session_user; 
    // print_r($this->session->userdata("logged_in")); //its show empty 
    $data['items'] = $this->auth_model->get_all_products(); 

    $this->load->view('includes/header', $data); 
    // $this->load->view('includes/navbar'); 
    $this->load->view('includes/navbar_new'); 
    $this->load->view('dashboard/index'); 
    $this->load->view('includes/footer'); 
} 

Ich weiß nicht, warum Sitzung nicht eingestellt ist. Ich stecke seit einer Woche darin fest. Bitte hilf mir.

+0

Was es zeigt stattdessen in Seite umleiten? Wenn Sie eine Sitzung erstellt haben, können Sie Sitzungscookies sehen. Wenn keine Sitzungscookies das Problem verursachen, wird in der Sitzung ein anderes Problem im Dashboard-Link erstellt. – Artier

+0

Wie lautet die Sitzungseinstellung in Ihrer Datei /application/config.php? Sehen Sie Fehlermeldungen in der Protokolldatei? – ourmandave

+0

Und wenn die Session-Library nicht automatisch geladen wird, laden Sie sie mit '$ this-> load-> library ('session');' – Artier

Antwort

3

Versuchen Sie dies.

ändern $config['sess_save_path'] = sys_get_temp_dir();-$config['sess_save_path'] = FCPATH . 'application/cache/sessions/'; in config.php

Verwandte Themen