最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

CodeIgniter配置之SESSION用法實(shí)例分析

 更新時間:2016年01月19日 15:56:11   作者:老彭  
這篇文章主要介紹了CodeIgniter配置之SESSION用法,結(jié)合實(shí)例形式分析了PHP中session的運(yùn)行原理并演示了CI框架下session的配置與使用方法,需要的朋友可以參考下

本文實(shí)例講述了CodeIgniter配置之SESSION用法。分享給大家供大家參考,具體如下:

剛使用Codeigniter時也被其中的SESSION迷惑過,后來就再也沒用過CI自帶的SESSION,想必還是有必要整理一下SESSION。為弄清CI中的SESSION,先來說一下PHP中SESSION是如何工作的。由于HTTP協(xié)議本身是無狀態(tài)的,所以當(dāng)保留某個用戶的訪問狀態(tài)信息時,需要客戶端有一個唯一標(biāo)識傳給服務(wù)端,這個唯一標(biāo)識就是SESSION ID,存放在客戶端的COOKIE中,然后服務(wù)端根據(jù)該標(biāo)識讀取存放的用戶狀態(tài)信息,達(dá)到保存會話狀態(tài)的目的。PHP中啟動一個會話需要執(zhí)行下面語句:

復(fù)制代碼 代碼如下:
session_start();

1、客戶端每次請求時會有一些信息存放中HTTP頭中發(fā)送給服務(wù)端,以用戶第一次訪問為例:

復(fù)制代碼 代碼如下:
Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Host:s.local
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36

2、服務(wù)端接到請求處理后并返回給客戶端,并在HTTP Response中加上添加COOKIE的請求,告訴瀏覽器需要設(shè)置一個COOKIE,COOKIE名為PHPSESSID,值為r887k5n4scg32d4ba34huuhmq7,如:

復(fù)制代碼 代碼如下:
Response Headers
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:Keep-Alive
Content-Length:0
Content-Type:text/html
Date:Sun, 08 Dec 2013 12:56:56 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=5, max=100
Pragma:no-cache
Server:Apache/2.2.11 (Win32) PHP/5.4.7
Set-Cookie:PHPSESSID=r887k5n4scg32d4ba34huuhmq7; path=/
X-Powered-By:PHP/5.4.7

3、當(dāng)客戶端再次訪問該網(wǎng)站的頁面時,瀏覽器會將該COOKIE發(fā)送給服務(wù)端,服務(wù)端根據(jù)COOKIE的值去讀取服務(wù)器上存放SESSION的文件,拿到到會話信息,如:

復(fù)制代碼 代碼如下:
Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:PHPSESSID=r887k5n4scg32d4ba34huuhmq7
Host:s.local
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63

從而達(dá)到保存會話狀態(tài)的目的。但也需要注意,如果獲取到用戶A登錄的SESSION ID會怎么樣?根據(jù)上面的邏輯,如果在請求過程中把獲取到的SESSION ID一并發(fā)送給服務(wù)端,服務(wù)端根據(jù)SESSION ID讀取文件,發(fā)現(xiàn)文件內(nèi)容存在,從而判定用戶為A用戶,也就是獲取到了A用戶的用戶狀態(tài),從而可能可以進(jìn)行一些敏感操作。所以在會話有效期內(nèi),獲取到了SESSION ID即獲取到了用戶的授權(quán),這是比較危險的,以本地的一個管理系統(tǒng)為例,通過chrome登錄后查看到客戶端COOKIE如下圖:

假如如果通過某種手段獲取到了SESSION ID, 可以模擬發(fā)送一個相同的COOKIE過去即可實(shí)現(xiàn)登錄。FireFox中可添加COOKIE,打開Firebug后Cookies中新建cookie,確定之后刷新頁面即可登錄到管理系統(tǒng),如下圖:

通常情況下可通過js獲取到cookie,所以需要注意轉(zhuǎn)義,防止數(shù)據(jù)展示時被執(zhí)行了。接下來看看CI中的SESSION。在配置文件中有幾個跟Session配置相關(guān)的參數(shù),影響到Session的使用,它們是:

//session保存在cookie中的名稱
$config['sess_cookie_name'] = 'ci_session';
//session的有效時間
$config['sess_expiration'] = 7200;
//是否關(guān)閉瀏覽器session失效
$config['sess_expire_on_close'] = FALSE;
//SESSION是否加密存放在COOKIE中
$config['sess_encrypt_cookie'] = FALSE;
//是否保存在數(shù)據(jù)庫中
$config['sess_use_database']  = FALSE;
//存在數(shù)據(jù)庫中,則數(shù)據(jù)庫表名
$config['sess_table_name'] = 'ci_sessions';
//是否匹配IP
$config['sess_match_ip']  = FALSE;
//是否匹配UserAgent
$config['sess_match_useragent'] = TRUE;
//更新時間時間
$config['sess_time_to_update'] = 300;

CI自帶的SESSION沒有服務(wù)端文件存儲,所有的信息都存放在客戶端COOKIE中,當(dāng)調(diào)用$this->load->library('session');時會啟動一個會話,即設(shè)置一個COOKIE,COOKIE的內(nèi)容如下:

Array
(
[session_id] => f05138a9513e4928cb0a57672cfe3b53
[ip_address] => 127.0.0.1
[user_agent] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
[last_activity] => 1386569398
[user_data] =>
)

當(dāng)客戶端請求時會將這些信息在HTTP頭中傳輸給服務(wù)端,服務(wù)端從HTTP頭中讀取到SESSION信息。同樣的可以實(shí)現(xiàn)會話,但該方式有很多的不確定因素,根據(jù)源碼說幾點(diǎn)吧:

1、如果日志文件中出現(xiàn):The session cookie data did not match what was expected. This could be a possible hacking attempt.說明兩個問題:a.sess_encrypt_cookie為false,SESSION在COOKIE中未加密存放 b.讀取到COOKIE后,校驗(yàn)失敗。涉及到加解密、參數(shù)處理的情況,容易出現(xiàn)匹配不通過的情況,若不通過則清空SESSION。

2、如果sess_match_ip為true,當(dāng)客戶端IP變化時,SESSION將校驗(yàn)不通過,從而清空SESSION。

3、sess_match_useragent默認(rèn)為true,當(dāng)客戶端UserAgent變化時,校驗(yàn)不通過,清空SESION。簡單的例子,通過IE瀏覽器訪問,若切換到不同的IE模式,Agent不同,所以校驗(yàn)不通過,清空SESSION。

可以看到,當(dāng)出現(xiàn)上面任何一種情況時,SESSION都會清空,出現(xiàn)登錄不成功或者跳轉(zhuǎn)到登錄頁面的情況。如果說不加密、不校驗(yàn)IP、UserAgent呢?因?yàn)镃OOKIE是存放在客戶端,需要伴隨HTTP請求發(fā)給服務(wù)端,一來過多的COOKIE會影響速度,對一些圖片等資源來說完全時浪費(fèi)帶寬;二來COOKIE只能存儲4K的數(shù)據(jù),加密處理后能存放的更小。

種種的不確定因素將產(chǎn)生各種奇怪的問題,避免過多的糾結(jié),果斷改用其他方式吧。

更多關(guān)于CodeIgniter框架相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《codeigniter入門教程

希望本文所述對大家基于CodeIgniter框架的PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • NativePHP使用PHP創(chuàng)建桌面應(yīng)用程序

    NativePHP使用PHP創(chuàng)建桌面應(yīng)用程序

    這篇文章主要為大家介紹了NativePHP使用PHP創(chuàng)建桌面應(yīng)用程序,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • php 中的closure用法詳解

    php 中的closure用法詳解

    這篇文章主要介紹了php 中的closure用法詳解,需要的朋友可以參考下
    2017-06-06
  • PHP解密支付寶小程序的加密數(shù)據(jù)、手機(jī)號的示例代碼

    PHP解密支付寶小程序的加密數(shù)據(jù)、手機(jī)號的示例代碼

    這篇文章主要介紹了PHP解密支付寶小程序的加密數(shù)據(jù)、手機(jī)號的示例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • PHP中將網(wǎng)頁導(dǎo)出為Word文檔的代碼

    PHP中將網(wǎng)頁導(dǎo)出為Word文檔的代碼

    今天要探討的是PHP網(wǎng)頁導(dǎo)出Word文檔的方法,使用其他語言的朋友也可以參考,因?yàn)樵硎遣畈欢嗟?/div> 2012-05-05
  • yii2行為的方法如何注入到組件類中詳解

    yii2行為的方法如何注入到組件類中詳解

    這篇文章主要給大家介紹了關(guān)于yii2中行為的方法是如何注入到組件類中去的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • CI框架網(wǎng)頁緩存簡單用法分析

    CI框架網(wǎng)頁緩存簡單用法分析

    這篇文章主要介紹了CI框架網(wǎng)頁緩存簡單用法,結(jié)合實(shí)例形式分析了CI框架網(wǎng)頁緩存的原理,以及開啟緩存、刪除緩存等操作技巧,需要的朋友可以參考下
    2018-12-12
  • php實(shí)現(xiàn)小程序支付完整版

    php實(shí)現(xiàn)小程序支付完整版

    這篇文章主要為大家詳細(xì)介紹了php實(shí)現(xiàn)小程序支付完整版,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • php實(shí)現(xiàn)購物車產(chǎn)品刪除功能(2)

    php實(shí)現(xiàn)購物車產(chǎn)品刪除功能(2)

    這篇文章主要為大家詳細(xì)介紹了php實(shí)現(xiàn)購物車產(chǎn)品刪除功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Yii2.0 模態(tài)彈出框+ajax提交表單

    Yii2.0 模態(tài)彈出框+ajax提交表單

    這篇文章主要介紹了Yii2.0 模態(tài)彈出框+ajax提交表單的實(shí)現(xiàn)思路和相關(guān)代碼,非常簡單實(shí)用,有需要的小伙伴可以參考下
    2016-05-05
  • CentOS 上搭建 PHP7 開發(fā)測試環(huán)境

    CentOS 上搭建 PHP7 開發(fā)測試環(huán)境

    本文給大家分享的是作者在centos上搭建部署php7的開發(fā)測試環(huán)境的全部過程,非常的細(xì)致,有需要的小伙伴可以參考下
    2017-02-02

最新評論

彩票| 聂荣县| 青龙| 铅山县| 赣州市| 金华市| 莫力| 浮梁县| 杭州市| 宁阳县| 宣汉县| 连山| 临武县| 巴青县| 嘉兴市| 宁乡县| 香港 | 搜索| 建宁县| 尚义县| 宝鸡市| 裕民县| 吴堡县| SHOW| 青川县| 徐汇区| 肇东市| 雅江县| 若尔盖县| 象州县| 西峡县| 越西县| 班戈县| 尖扎县| 拉萨市| 高密市| 焦作市| 马龙县| 社会| 佳木斯市| 临颍县|