[英]can't use session at codeIgniter
我的表單控制器中有一個會話,該會話是在用戶保存會話影響表單頁面時創建的,所以我的問題是:
如果我加載頁面時未單擊“保存”,則會出現未定義的索引[會話索引]錯誤
所以我在主頁上創建了會話,但問題是如果我不首先訪問主頁就加載了表單頁面,則出現未定義的索引錯誤,我試圖調用方法session_start()
但是遇到了這個錯誤
嚴重性:通知消息:會話已經開始-忽略session_start()文件名:views / Form.php行號:5
我強烈建議使用默認的CI會話庫。 您可以在autoload.php
中autoload.php
加載會話。 您的會話將自動開始,無需調用session_start()
。
然后用$this->session->set_userdata('save', 'true');
替換$_SESSION['save']="true"
$this->session->set_userdata('save', 'true');
。
我認為您需要檢查session['save']
是否為true,因此必須事先在route.php中指定的默認控制器中默認聲明session['save']
為“ false
”,並且還要確保session['save']
索引已經在表單頁面控制器中定義,請檢查如下:
if ($this->session->userdata('save')) {
// do something when exist
} else {
$this->session->set_userdata('save', 'false');
}
我不確定您為什么要嘗試在CI中實現自己的會話管理,因為CI提供的功能強大的工具之一就是靈活,簡單但功能強大的會話管理系統。
即便如此,對於難題而言,一個簡單的解決方案肯定是簡單地檢查會話變量是否在表單中設置,如果未設置,則將其設置為0。在控制器中,您可以進行處理,即檢查該值是否為0,如果是,則啟動會話並分配會話變量,或者將用戶扔出去,或者在找不到會話或將其設置為0時執行您需要應用執行的所有操作會話尚未激活。
您的會話將自動開始,無需在每個控制器中都調用session_start()。 codeigniter會話庫會處理它。
首先,您必須加載會話庫。 應用/配置/ autoload.php
$this->load->library("session");
如果已經加載,則無需再次加載。
在會話中設置數據
$this->session->set_userdata("KEY","VALUE");
從會話中獲取數據
$this->session->userdata("KEY");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.