《PHP教程:php及codeigniter使用session-cookie的方法(詳解)》要點:
本文介紹了PHP教程:php及codeigniter使用session-cookie的方法(詳解),希望對您有用。如果有疑問,可以聯系我們。
1、讀寫cookiePHP實例
<1>原生PHP實例
setcookie('name','value',time)
設置失敗,沒有正常寫入瀏覽器,測試失敗,原因未知PHP實例
<2>CI框架PHP實例
$this->input->set_cookie("views","test10",1000); echo $_COOKIE["views"];//此方法獲取值時,如果值不存在會報錯,當然可以先用isset($_COOKIE["views"])判斷一下
<3>通過helperPHP實例
$this->load->helper('cookie');//這行放在view也是可以的,隨便 set_cookie('views','test10',1000); echo get_cookie('views');//此方法獲取值如果獲取不到,會返回空,不會報錯
2、讀寫sessionPHP實例
<1>原生sessionPHP實例
啟動:PHP實例
<?php session_start(); ?>
賦值:PHP實例
$_SESSION['views'] = "test20";
取值:
PHP實例
echo "Session:". $_SESSION['views'];
存續時間:PHP實例
會話.當瀏覽器關閉,cookie里面的phpsession就會清空,下次打開會重新生成一個PHP實例
雖然服務器還保存著這個session.session的過期時間在php.ini里設置,參見另一篇文章php(codeigniter)安全性注意事項PHP實例
<2>CI框架sessionPHP實例
啟動:PHP實例
$this->load->library('session');//load必須在controller完成,當要使用session必須先load賦值: $this->session->views = "test11";
取值:
PHP實例
echo "Session:". $_SESSION['views'];
存續時間:PHP實例
客戶端有2個小時的存續時間,當服務器的session被刪除,因為客戶端的session id還是有效的,所以當再次打開的時候,服務端會再創建一個跟客戶端session id相同的session,當然是創建新id還是老id并不重要,因為只是id同名,里面是沒有數據的PHP實例
<3>區別PHP實例
>兩個session名稱是不同的,一個叫phpsession,一個叫ci_sessionPHP實例
>只能啟動一個,不能兩個都啟動PHP實例
>取值是相同的PHP實例
>兩個千萬不要混用,應該全面放棄原生的方式PHP實例
>原生phpsession的是隨便訪問的,ci_session是httponly的,這就意味著原生的session可能會被通過xxs攻擊,通過js獲取到cookiePHP實例
<4>例外情況PHP實例
有一種情況是這樣的:PHP實例
當此時已經存在ci_session,因為這個ci_是持久化的PHP實例
//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,并且值會寫進去PHP實例
如果什么都沒聲明,也沒有賦值,直接取值,那么會報錯,因為要使用ci_session必須要load,我們沒有load就會報錯,所以證明了,在用原生的方式進行賦值的時候,他相當于啟動了session,啟用了ci_session,但他又沒有權限寫入,這可以說是一個bugPHP實例
<5>session如何運作PHP實例
cookie的運作比較容易理解,就是寫入到用戶cookie,寫什么讀出來就是什么.只要是本站的cookie,就可以通過鍵值讀出來.PHP實例
session的值是存在服務器的,但是怎么知道這個值是哪個用戶的?通過在用戶cookie里存入那個session的文件名,而保存的值放在服務器同名的文件里面.說的盜取cookie指的就是盜取這個,重要的信息存在服務器上,但是這個被盜了也完蛋.所以,也不能相信cookie里存的這個session-key,應該做一個鑒權.PHP實例
注意,寫入session的同時,寫session-key到用戶的cookie里這個是自動完成的,這個存續時間應該是在服務器的php.ini里面配置.
PHP實例
以上這篇php及codeigniter使用session-cookie的方法(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持維易PHP.PHP實例
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/993.html