本篇文章主要介紹php及codeigniter使用session-cookie的方法詳解,有興趣的朋友參考下,希望對大家有幫助。
1、讀寫cookie
#<1>原生
<1>原生setcookie('name','value',time)
<2>CI框架
$this->input->set_cookie("views","test10",1000); echo $_COOKIE["views"];//此方法获取值时,如果值不存在会报错,当然可以先用isset($_COOKIE["views"])判断一下
#<3>透過helper
$this->load->helper('cookie');//这行放在view也是可以的,随便 set_cookie('views','test10',1000); echo get_cookie('views');//此方法获取值如果获取不到,会返回空,不会报错
<1>原生session
## 啟動:
<?php
session_start();
?>
#$_SESSION['views'] = "test20";
#
echo "Session:". $_SESSION['views'];
存續時間:
會話。當瀏覽器關閉,cookie裡面的phpsession就會清空,下次開啟會重新產生一個雖然伺服器還保存著這個session。 session的過期時間在php.ini裡設置,請參閱另一篇文章php(codeigniter)安全性注意事項
<2>CI框架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同名,裡面是沒有資料的
<3>區別#>兩個session名稱是不同的,一個叫phpsession,一個叫ci_session
>兩個千萬不要混用,應該全面放棄原生的方式
>原生phpsession的是隨便訪問的,ci_session是httponly的,這意味著原生的session可能會被透過xxs攻擊,透過js取得到cookie
有一種情況是這樣的:
當此時已經存在ci_session,因為這個ci_是持久化的
//session_start();//没有启动原生的session //$this->load->library('session');//没有启动ci的session $_SESSION['views'] = "test23";//直接用原生的方式进行赋值 echo "Session:". $_SESSION['views'];//可以正常取值出来"test23"
以上是php及codeigniter使用session-cookie的方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!