簡體   English   中英

不能在codeIgniter上使用會話

[英]can't use session at codeIgniter

我的表單控制器中有一個會話,該會話是在用戶保存會話影響表單頁面時創建的,所以我的問題是:

如果我加載頁面時未單擊“保存”,則會出現未定義的索引[會話索引]錯誤

所以我在主頁上創建了會話,但問題是如果我不首先訪問主頁就加載了表單頁面,則出現未定義的索引錯誤,我試圖調用方法session_start()但是遇到了這個錯誤

嚴重性:通知消息:會話已經開始-忽略session_start()文件名:views / Form.php行號:5

我強烈建議使用默認的CI會話庫。 您可以在autoload.phpautoload.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.

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