首頁 > 後端開發 > php教程 > 關於php及codeigniter使用session-cookie的方法解析

關於php及codeigniter使用session-cookie的方法解析

不言
發布: 2023-04-01 07:48:02
原創
1703 人瀏覽過

下面為大家帶來一篇php及codeigniter使用session-cookie的方法(詳解)。內容還挺不錯的,現在就分享給大家,也給大家做個參考。

1、讀寫cookie

#<1>原生

<1>原生

setcookie(&#39;name&#39;,&#39;value&#39;,time)
登入後複製

設定失敗,沒有正常寫入瀏覽器,測試失敗,原因未知

<2>CI框架

$this->input->set_cookie("views","test10",1000);
echo $_COOKIE["views"];//此方法获取值时,如果值不存在会报错,当然可以先用isset($_COOKIE["views"])判断一下
登入後複製

#<3>透過helper

$this->load->helper(&#39;cookie&#39;);//这行放在view也是可以的,随便
set_cookie(&#39;views&#39;,&#39;test10&#39;,1000);
echo get_cookie(&#39;views&#39;);//此方法获取值如果获取不到,会返回空,不会报错
登入後複製

2、讀寫session

<1>原生session


## 啟動:

<?php
session_start();
?>
登入後複製


#

$_SESSION[&#39;views&#39;] = "test20";
登入後複製

取值:

#

echo "Session:". $_SESSION[&#39;views&#39;];
登入後複製
登入後複製

存續時間:

會話。當瀏覽器關閉,cookie裡面的phpsession就會清空,下次開啟會重新產生一個

雖然伺服器還保存著這個session。 session的過期時間在php.ini裡設置,請參閱另一篇文章

php(codeigniter)安全性注意事項

<2>CI框架session

啟動:

$this->load->library(&#39;session&#39;);//load必须在controller完成,当要使用session必须先load赋值:
$this->session->views = "test11";
登入後複製

取值:

echo "Session:". $_SESSION[&#39;views&#39;];
登入後複製
登入後複製

存續時間:

客戶端有2個小時的存續時間,當伺服器的session被刪除,因為客戶端的session id還是有效的,所以當再次打開的時候,服務端會再創建一個跟客戶端session id相同的session,當然創建新id還是老id並不重要,因為只是id同名,裡面是沒有資料的

<3>區別#>兩個session名稱是不同的,一個叫phpsession,一個叫ci_session

>只能啟動一個,不能兩個都啟動

>取值是相同的

>兩個千萬不要混用,應該全面放棄原生的方式

>原生phpsession的是隨便訪問的,ci_session是httponly的,這意味著原生的session可能會被透過xxs攻擊,透過js取得到cookie

#<4>例外情況

###有一種情況是這樣的:############當此時已經存在ci_session,因為這個ci_是持久化的#########
//session_start();//没有启动原生的session
//$this->load->library('session');//没有启动ci的session
$_SESSION['views'] = "test23";//直接用原生的方式进行赋值
echo "Session:". $_SESSION[&#39;views&#39;];//可以正常取值出来"test23"
登入後複製
#########透過查看cookie,發現沒有原生session存在,只能是走的ci session,那麼在伺服器的session裡找到這個文件,發現這個值沒有寫進去如果有聲明session_start(),他就會走原生的模式,會重新創建一個phpsession,並且值會寫進去######如果什麼都沒聲明,也沒有賦值,直接取值,那麼會報錯,因為要使用ci_session必須要load,我們沒有load就會報錯,所以證明了,在用原生的方式進行賦值的時候,他相當於啟動了session ,啟用了ci_session,但他又沒有權限寫入,這可以說是一個bug############<5>session如何運作################################################################################### cookie的運作比較容易理解,就是寫入到使用者cookie,寫什麼唸出來就是什麼。只要是本站的cookie,就可以透過鍵值讀出來。 ######session的值是存在伺服器的,但是怎麼知道這個值是哪個使用者的?透過在用戶cookie裡存入那個session的檔案名,而將儲存的值放在伺服器同名的檔案裡面。說的盜取cookie指的就是盜取這個,重要的資訊存在伺服器上,但是這個被偷了也完蛋。所以,也不能相信cookie裡存的這個session-key,應該要做一個鑑權。 ############注意,######寫入session的同時,寫session-key到用戶的cookie裡這個是自動完成的,這個存續時間應該是在伺服器的php .ini裡面配置。 #########以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網! ######相關推薦:#########如何實作PHP CodeIgniter分頁及多條件查詢######################## ####

以上是關於php及codeigniter使用session-cookie的方法解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板