下面為大家帶來一篇php及codeigniter使用session-cookie的方法(詳解)。內容還挺不錯的,現在就分享給大家,也給大家做個參考。
1、讀寫cookie
#f35d6e602fd7d0f0edfa6f7d103c1b57原生
f35d6e602fd7d0f0edfa6f7d103c1b57原生setcookie('name','value',time)設定失敗,沒有正常寫入瀏覽器,測試失敗,原因未知
2cc198a1d5eb0d3eb508d858c9f5cbdbCI框架
$this->input->set_cookie("views","test10",1000); echo $_COOKIE["views"];//此方法获取值时,如果值不存在会报错,当然可以先用isset($_COOKIE["views"])判断一下
#5bdf4c78156c7953567bb5a0aef2fc53透過helper
$this->load->helper('cookie');//这行放在view也是可以的,随便 set_cookie('views','test10',1000); echo get_cookie('views');//此方法获取值如果获取不到,会返回空,不会报错2、讀寫session
f35d6e602fd7d0f0edfa6f7d103c1b57原生session
## 啟動:
<?php
session_start();
?>
#$_SESSION['views'] = "test20";
#
echo "Session:". $_SESSION['views'];
存續時間:
會話。當瀏覽器關閉,cookie裡面的phpsession就會清空,下次開啟會重新產生一個雖然伺服器還保存著這個session。 session的過期時間在php.ini裡設置,請參閱另一篇文章php(codeigniter)安全性注意事項
2cc198a1d5eb0d3eb508d858c9f5cbdbCI框架session
啟動:
$this->load->library('session');//load必须在controller完成,当要使用session必须先load赋值: $this->session->views = "test11";
取值:
echo "Session:". $_SESSION['views'];
存續時間:
客戶端有2個小時的存續時間,當伺服器的session被刪除,因為客戶端的session id還是有效的,所以當再次打開的時候,服務端會再創建一個跟客戶端session id相同的session,當然創建新id還是老id並不重要,因為只是id同名,裡面是沒有資料的
5bdf4c78156c7953567bb5a0aef2fc53區別#>兩個session名稱是不同的,一個叫phpsession,一個叫ci_session
>原生phpsession的是隨便訪問的,ci_session是httponly的,這意味著原生的session可能會被透過xxs攻擊,透過js取得到cookie
#23889872c2e8594e0f446a471a78ec4c例外情況
###有一種情況是這樣的:############當此時已經存在ci_session,因為這個ci_是持久化的#########
//session_start();//没有启动原生的session //$this->load->library('session');//没有启动ci的session $_SESSION['views'] = "test23";//直接用原生的方式进行赋值 echo "Session:". $_SESSION['views'];//可以正常取值出来"test23"#########透過查看cookie,發現沒有原生session存在,只能是走的ci session,那麼在伺服器的session裡找到這個文件,發現這個值沒有寫進去如果有聲明session_start(),他就會走原生的模式,會重新創建一個phpsession,並且值會寫進去######如果什麼都沒聲明,也沒有賦值,直接取值,那麼會報錯,因為要使用ci_session必須要load,我們沒有load就會報錯,所以證明了,在用原生的方式進行賦值的時候,他相當於啟動了session ,啟用了ci_session,但他又沒有權限寫入,這可以說是一個bug############43ad812d3a971134e40facaca816c822session如何運作################################################################################### cookie的運作比較容易理解,就是寫入到使用者cookie,寫什麼唸出來就是什麼。只要是本站的cookie,就可以透過鍵值讀出來。 ######session的值是存在伺服器的,但是怎麼知道這個值是哪個使用者的?透過在用戶cookie裡存入那個session的檔案名,而將儲存的值放在伺服器同名的檔案裡面。說的盜取cookie指的就是盜取這個,重要的資訊存在伺服器上,但是這個被偷了也完蛋。所以,也不能相信cookie裡存的這個session-key,應該要做一個鑑權。 ############注意,######寫入session的同時,寫session-key到用戶的cookie裡這個是自動完成的,這個存續時間應該是在伺服器的php .ini裡面配置。 #########以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網! ######相關推薦:#########如何實作PHP CodeIgniter分頁及多條件查詢######################## ####
以上是關於php及codeigniter使用session-cookie的方法解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!