似乎我的Codeigniter內部出了問題。我能夠訪問會話變量從一個頁面到另一個頁面。但是有些東西讓我重新安裝PHP和數據庫(MariaDB)。codeigniter會話userdata從頁面到頁面的工作,但最終在頁面重定向丟失
安裝完成後,我的Codeigniter項目開始將會話數據從一個頁面丟失到另一個頁面。我沒有檢查會話是否真的在ci_sessions表中創建;並看到它的確如此;我可以從它用userdata設置的相同頁面訪問session變量,而不是flashdata。
例如
Tt.php
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class Tt extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
$this->session->set_userdata('aa','emi');
/* if header redirect is commented out and i echo the below
echo $this->session->userdata('aa'); //will display "emi" */
/*but if header redirect is not commented out and redirect to Vv.php controller*/
header("Location: vv"); /*echo $this->session->userdata('aa'); shows nothing in Vv.php controller*/
}
}
Vv.php
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class Vv extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
echo $this->session->userdata('aa'); //shows nothing
}
}
我沒有設置任何東西比卸載和安裝PHP和數據庫(MariaDB的)等。但在此之前,我可以訪問Vt中設置在Tt中的會話變量,反之亦然。在config.php
會話設置如下:
在database.php中$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array(
'dsn' => '',
'hostname' => '127.0.0.1',
'username' => 'root',
'password' => '<mypassword>',
'database' => 'appname',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
數據庫設置我用盡了一切可能的,但仍然沒有運氣得到它的工作後,我不知道是否是MariaDB讀取鎖定。如果有人能提出解決方案,我會很高興。
使用CI3設置您的會話保存路徑,當你做的print_r出現什麼($這 - >會話級>用戶數據); ? –
print_r($ this-> session-> userdata('aa'))在Tt.php中顯示「emi」,但是當重定向到Vv.php控制器print_r($ this-> session-> userdata('aa'))時,不會顯示任何內容 –
加載URL助手並嘗試使用'redirect('vv','refresh')'重定向'(如果有效)。 – Tpojka