91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php框架codeigniter中怎么使用框架的session

發布時間:2021-02-02 13:43:24 來源:億速云 閱讀:211 作者:小新 欄目:開發技術

小編給大家分享一下php框架codeigniter中怎么使用框架的session,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

這篇文章將為大家詳細講解有關php框架codeigniter中怎么使用框架的session,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

里面有兩種session的使用方法:

1是php的原始的session使用方法,這個很簡單,$_SESSION['name']="name",然后在需要的地方顯示:echo $_SESSION['name'];

2是codeigniter這個框架的一個方法:

下面就詳細講解如何使用這個有點點復雜的方法:

首先,在\ci\application\config下面的config.php文件中找到:$config['encryption_key'] = '';這個里面隨便填什么值都可以,但是不能為空。一般是英文啊,不要鉆牛角尖。

接著在\ci\application\config下面的auto.php文件中找到:$autoload['libraries'] = array('');里面要填寫:$autoload['libraries'] = array('session');或者在適當的地方如control文件夾里面的相應文件中(一般是在構造方法中)寫:$this->load->library('session');這樣也行。

現在環境配置好了,現在就是寫代碼了:

在需要放入session的地方寫:

$this->session->set_userdata('name','yang');

這樣session里面就有了值了。

顯示值:

echo $this->session->userdata('name');

如果是array,則:

$newdata = array(

                   'username'  => 'johndoe',

                   'email'     => 'johndoe@some-site.com',

                   'logged_in' => TRUE

               );

$this->session->set_userdata($newdata);

以下是轉載的別人的詳細的有點廢話的相關知識:

Sessions會在每個頁面載入后開始運行,所以session類必須首先被初始化。

1、您可以在控制器中初始化,也可以在系統中自動加載(譯者注:在autoload.php設定)$autoload['libraries'] = array('session');

2、要在您的控制器構造函數中初始化session類,您可以使用 $this->load->library 函數:$this->load->library('session');一旦被載入, session就可以這樣使用: $this->session。

session類的絕大部分都會在后臺運行,所以初始化session時,它session數據會被自動讀取、創建和更新。

Sessions 是怎樣工作的?

需要知道的非常重要的一點就是,session類一旦被初始化,它就會自動運行。對于后面的事情,您可以完全不作理會。正如您將會在下面看到的一樣,您可以正常使用session來工作,甚至還可以添加自己的session數據,而在這一切的過程中,讀、寫和更新的操作都是自動完成的。

當頁面載入后,session類就會檢查用戶的cookie中是否存在有效的session數據。如果session數據不存在(或者已經過期),那么就會創建一個新的session并把他保存在cookie中。如果session數據存在,那么他的信息就會被更新,同時cookie也會被同時更新。每次更新都會重新生成session_id的值。

默認情況下, Session Cookie 每隔 5 分鐘才會更新一次,這樣會減少對處理器的負荷。如果你重復的裝載頁面, 你會發現"上次活動"的時間在五分鐘,或多余五分鐘的時候才會變化,也就是 cookie上次被寫入的時間。 這個時間可以通過設置 application/config/config.php 文件里的 $config['sess_time_to_update'] 行來改變。

一個 session 是由一個包括下列信息的數組組成的:

唯一的用戶Session ID (這是一個平均信息量統計出來的非常堅固的隨機字符串,使用MD5加密,默認是每五分鐘就重新生成一次。

用戶的 IP 地址

用戶瀏覽器信息(取前50個字符)

最新的一個活躍時間戳.

以上數據將會用以下數組格式序列化并存到cookie里:

[array]

(

     'session_id'    => random hash,

     'ip_address'    => 'string - user IP address',

     'user_agent'    => 'string - user agent data',

     'last_activity' => timestamp

)

1、取得 Session 數據:

可以通過如下的函數來得到 session 數組的任何信息:

$this->session->userdata('item');

item 是數組里的相對應數據的索引。例如,想要獲得 session ID, 你要使用如下的代碼:

$session_id = $this->session->userdata('session_id');

注意: 如果你的目標數據不存在的話,這個函數會返回 FALSE (布爾值boolean)。

2、添加自定義的 Session 數據:

假設,有個特定用戶登陸到你的網站, 當他通過檢測后 你可以添加他的用戶名和電子郵件到 session cookie 中,這些信息可以在不去訪問數據庫的情況下,當成全局量來使用。

通過以下函數,你可以傳遞一個新的用戶數組到 session 數組中:

$this->session->set_userdata($array);

$array 是一個結合數組,用來存儲你的新數據。例如 :

復制代碼 代碼如下:

$newdata = array(

                   'username'  => 'johndoe',

                   'email'     => 'johndoe@some-site.com',

                   'logged_in' => TRUE

               );

$this->session->set_userdata($newdata);

如果使用下面 set_userdata()函數的寫法,可以每次只添加一個用戶數據。

$this->session->set_userdata('some_name', 'some_value');

注意: Cookies 只能存儲 4KB 的數據, 使用時要小心超出它的容量。特別指出的是,加密會產生比原數據更長的數據字符串,所以一定要當心你要存放數據的大小。

3、刪除 Session 數據:正如使用 set_userdata() 是用來添加信息到 session 中,而通過向unset_userdata() 函數中傳遞 session key 可以用來刪除這些信息。例如, 你想要從 session 信息里去掉 'some_name':

$this->session->unset_userdata('some_name');

也可以給這個函數傳一個要刪除項的關聯數組。

$array_items = array('username' => '', 'email' => '');

$this->session->unset_userdata($array_items);

4、將 Session 數據存入數據庫:

當session 數據在數據庫中可用時,每當從用戶cookie中發現一個有效的session,一個數據庫查詢就會被執行以匹配它。如果 session ID 不相配,session 就會被銷毀。Session ID永遠不會更新,它們只會在一個新的會話創建時生成。

為了存儲session,你必須先創建一個數據表。這是 session 類所需的基本結構(用于MySQL的):

CREATE TABLE IF NOT EXISTS `ci_sessions` (

session_id varchar(40) DEFAULT '0' NOT NULL,

ip_address varchar(16) DEFAULT '0' NOT NULL,

user_agent varchar(50) NOT NULL,

last_activity int(10) unsigned DEFAULT 0 NOT NULL,

user_data text DEFAULT '' NOT NULL,

PRIMARY KEY (session_id) );

一旦啟用了,Session類就會在數據庫中存儲session數據。

同時確保你已經在配置文件中指定了數據表名:$config['sess_table_name'] = 'ci_sessions';

注意: 默認情況下這個表叫做 ci_sessions, 但是你可以給它指定任意名字,只要你更新了 application/config/config.php 文件以確保它包含了你所起的名字。一旦你創建了數據表,你就可以像下面這樣在config.php文件中啟用數據庫選項:

$config['sess_use_database'] = TRUE;

注意: Session類已經內置了清除過期session的垃圾回收機制,因此你不需要編寫你自己的事務來做這個。

5、銷毀 Session

要清除當前 session:$this->session->sess_destroy();

Session 的參數

6、你可以在application/config/config.php 文件中找到以下的 Session 相關的參數:

參數     默認     選項     描述

sess_cookie_name     ci_session     無     你想要保存 Session Cookie 的名字。

sess_expiration     7200     無     session 持續的秒數。默認是2個小時(7200秒)。如果將這個數值設為: 0,就可以得到 永久 session。

sess_expire_on_close     FALSE     TRUE/FALSE (boolean)     這個選項決定當瀏覽器窗口關閉時是否自動使session過期。

sess_encrypt_cookie     FALSE     TRUE/FALSE (布爾值boolean)     是否對 session 數據加密.

sess_use_database     FALSE     TRUE/FALSE (布爾值boolean)     是否將 session 數據存放入數據庫中。在開啟這個選項前,你要先創建一個數據庫表。

sess_table_name     ci_sessions     任何有效的 SQL 表名     session 數據庫表的名字。

sess_time_to_update     300     時間以秒計算     這個選項控制 session 類多久會產生一個新的session 和 session id。

sess_match_ip     FALSE     TRUE/FALSE (布爾值boolean)     是否通過用戶的IP地址來讀取 session 的數據。 注意 ,有些網絡運行商 ISPs 會動態的改變IP, 所以將這個選項設為 FALSE, 才有可能得到永久的 session。

sess_match_useragent     TRUE     TRUE/FALSE (布爾值boolean)     是否要按照對應的 User Agent 來讀取 session 數據。

以上是“php框架codeigniter中怎么使用框架的session”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

射阳县| 西峡县| 舒兰市| 贡嘎县| 灵石县| 文成县| 虞城县| 柳州市| 英德市| 永安市| 舟曲县| 信阳市| 襄汾县| 平远县| 宁海县| 连州市| 秀山| 来宾市| 前郭尔| 禄丰县| 克什克腾旗| 洪泽县| 绥宁县| 石阡县| 弥勒县| 孟连| 化德县| 安新县| 北海市| 郁南县| 象州县| 蒙城县| 安丘市| 竹山县| 通江县| 武鸣县| 宜昌市| 江都市| 蓬溪县| 浑源县| 周至县|