COOKIE 服務器發送到客戶端的片段信息 在存儲到客戶端的內存或者硬盤的技術
cookie的操作:
setcookie($name,$value,$expire,$path,$domain,$secure)
$_COOKIE[]
setcookie($a['b'],'val')
setcookie($name,'',time()-1000)
優點:信息保存在客戶端 不會太佔用服務器資源 執行效率相對較高
缺點:用戶可以禁止cookie
SESSION
session_start();
$_SESSION;
$_SESSION= [];
session_destory();
session配置
session.auto_start
session.cookie_domian
session.cookie_lifetime
session.cookie_path
session.name
session.save_path
session.use_cookie
session.use_trans_sid
//垃圾回收機制
每100次調用session_start()時有一次清除回收session的機會,
清除當前時間戳減去保存時間戳大於1440的session
session.gc_probability=1
session.gc_divisor=100
session.gc_maxlifetime=1440
session.save_handler
傳遞sessionID的問題
session_name()
session_id()
<a href="1.php?<?php echo session_name().'='.session_id() ?>">下一頁</a>
如果開啓session SID爲空 如果未開啓SID 比較智能
<a href="1.php?<?php echo SID; ?>">下一頁</a>
如果cookie被禁用掉 session_id無法通過cookie取得session信息
SESSION 存儲:
seesion_set_save_handler()
SESSION 以 mysql memcache redis 內存服務器存儲
cookie 和session 的區別:
1、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。
2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙
考慮到安全應當使用session。
3、session會在一定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能
考慮到減輕服務器性能方面,應當使用COOKIE。
4、單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。