2017-07-11 49 views
1

我在登錄功能中創建了會話。現在我想在所有其他函數上使用創建的會話,如果用戶登錄,則創建的會話應該應用於所有其他函數。如何在codeigniter中同時獲取所有函數的會話?

感謝

+0

這就是會話的工作方式。您是否閱讀過關於會話的codeigniter用戶指南? – TimBrownlaw

+0

歡迎來到SO,請先看看[怎麼問](https://stackoverflow.com/help/how-to-ask)獲取有關您的問題的良好建議,您需要展示我的一些努力,我的意思是到目前爲止您嘗試過的是什麼,在運行代碼時會得到什麼錯誤。一個好問題也會得到更多關注和更好的解決方案。 –

回答

0

我覺得你有必要先了解會話。

會話如何工作?

會話通常會在每次頁面加載時全局運行,所以Session類應該在您的控制器構造函數中初始化,或者可以由系統自動加載。在大多數情況下,會話類將在後臺無人值守運行,因此只需初始化該類就可以在必要時讀取,創建和更新會話。使用

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

一旦加載,會議庫對象將可用:

要手動初始化會話類在你的控制器構造,使用$這 - >負載>庫()方法

$this->session 

會話數據只是一個與特定會話ID(cookie)關聯的數組。會議

訪問CI文檔以瞭解更多詳細 看到它住在這裏:Session

0

在登錄部分

$this->db->where('email',$email); 
$this->db->where('password',$pass); 
    $query = $this->db->get('admin'); 
$data= $query->result_array(); 
if($data){ 
$this->session->set_userdata('sessionVariable', $data); 
redirect('controller_name'); 
} 

開放autoload.php從application/config/autoload.php

$autoload['libraries'] = array('session'); 

OR

負荷會議庫在控制器的__construct()

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

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

    } 

爲了獲取會話數據

$sessionData = $this->session->userdata('sessionVariable'); 
0

可以自動加載在config.php

$autoload['libraries'] = array('database','Session','email'); 

會議

您可以創建一個核心文件夾中的基礎控制器,並將所有其他控制器擴展到該b控制器。

喜歡這個

<?php 
class MY_Controller extends CI_Controller { 

public $data = array(); 
    function __construct() { 

     parent::__construct(); 

     $this->data['errors'] = array(); 

     $this->data['site_name'] = config_item('site_name'); 
     $this->load->library('session'); 



    } 
}  

現在你的所有其他控制器應的CI_Controller

延伸到你的基本控制器,而不是在你的控制器

控制器1

class Login extends MY_Controller 
{ 
    function __construct() { 

     parent::__construct(); 


} 


} 

控制器2:

class Dashboard extends MY_Controller 
{ 
    function __construct() { 

     parent::__construct(); 


} 


} 

所以你會得到只需要加載你的庫是基本控制器,並得到基本控制器的所有善良的孩子控制器。這會給你更好的hierarchy,code managementsecurity

相關問題