簡體   English   中英

CodeIgniter中的會話-不能相應地工作

[英]Session in CodeIgniter - did not work accordingly

我現在正在使用codeigniter進行會話,不確定是否出錯。 我只能讀取第一頁的會話。 當我瀏覽到其他頁面時,會話消失了。 以下是儀表板的var_dump。

array(2) {
["__ci_last_regenerate"]=>
int(1487063353)
["logged_in"]=>
array(2) {
["userName"]=>
string(5) "julie"
["userRole"]=>
string(1) "1"
}}

以下是第二頁的var_dump,當我返回儀表盤時

array(1) {
["__ci_last_regenerate"]=>
int(1487063602)
}

以下是我的代碼。 感謝您是否可以幫助我指出問題和解決方案。 提前致謝。

配置/ config.php文件

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 1800; // 30 minutes
$config['sess_save_path'] = BASEPATH .'/sessions/';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

庫/ SimpleLoginSecure.php

function login($user_name,$user_pass)
{
   $this->CI =& get_instance();

   // verification code goes here

   //set session data
   $user_data = $query->row_array();
   $dataSession['userName'] = $user_data['userName'];
   $dataSession['userRole'] = $user_data['userRole'];
   $this->CI->session->set_userdata('logged_in',$dataSession);
   return TRUE;
}

控制器/ login.php中

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

public function index() {
    $this->load->helper('form');
    $this->load->library('form_validation');

    $this->form_validation->set_error_delimiters('<p class="text-red">', '</p>');       
    $this->form_validation->set_rules('userName', 'Username', 'trim|required|xss_clean');
    $this->form_validation->set_rules('userPass', 'Password', 'trim|required|xss_clean|callback_check_database');

    if ($this->form_validation->run() == false) {
        $this->load->view('index');
    }       
}

function verify_user()
{
    $this->load->library('form_validation');
    $this->load->library('SimpleLoginSecure');

    $hasher = new PasswordHash(8, false);
    $userpass = $this->input->post('inputPassword');
    $username = $this->input->post('inputName');

    $results = $this->simpleloginsecure->login($username,$userpass);
    if($results != FALSE) {
      $SESS_data = $this->session->userdata('logged_in');
      $data['SESS_username'] = $SESS_data['userName'];
      $data['SESS_userrole'] = $SESS_data['userRole'];

      var_dump($this->session->all_userdata());
      $this->load->view('dashboard', $data);
  }
  else {
     $attempt = $this->simpleloginsecure->updatePassAttempt($userName);         
     if ($attempt != FALSE) {
        echo '<script>alert("Invalid Username or password"); window.history.back();</script>';
     }      
   }      
}

function logout() {
    $this->load->library('SimpleLoginSecure');

    // Logout
    $this->simpleloginsecure->logout();
    echo '<script>alert("Successfully Logout"); </script>';
    redirect(base_url());
}

確保您實際上是在加載會話庫,這是最安全的選擇,前提是要在95-100%的時間內使用它,將其保留在自動加載中。

庫數組中的application/config/autoload.php添加了“會話”,這將確保在初始化時始終將其加載。 在第60行附近:

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

發生這種事情的最常見問題是在需要時不加載庫。

我還建議使用完整的控制器和模型來進行帳戶管理,而不是使用庫或幫助程序,因為它在標准CI范圍內,使您的生活更加輕松。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM