一刀脏、cookie介紹
1、存儲(chǔ)在瀏覽器客戶端的一小片數(shù)據(jù)(瀏覽器創(chuàng)建了cookie)
2、可以同時(shí)被前臺(tái)與后臺(tái)操作(前后臺(tái)共享)
3箫津、可以跨頁(yè)面存取
4、不可跨服務(wù)器訪問宰啦,可以在子域中跨域苏遥。
5、cookie是有生命期的绑莺,默認(rèn)是與瀏覽器進(jìn)程相同暖眼,如果進(jìn)程退出,cookie會(huì)被銷毀
6纺裁、cookie除了值诫肠,其余屬性是只寫。
7欺缘、cookie存儲(chǔ)有限制
瀏覽下的cookie數(shù)不能超過 300 個(gè)
每個(gè)服務(wù)器不能超過 20 個(gè)
所有cookie包含他們屬性占據(jù)的數(shù)據(jù)大小不能超過 4k
8栋豫、cookie不安全,可以被客戶端更改谚殊。因此不要用cookie存儲(chǔ)重要或者敏感數(shù)據(jù)丧鸯。
二、cookie優(yōu)缺點(diǎn)
優(yōu)點(diǎn):將信息存儲(chǔ)在用戶硬盤嫩絮,可以可以作為全局變量丛肢,可以跨域。
缺點(diǎn):隱私性差
cookie與瀏覽器相關(guān)剿干,不同瀏覽器訪問同一個(gè)頁(yè)面蜂怎,其cookie不能相互訪問
cookie是硬盤上一個(gè)文件,可能被用戶刪除
cookie是以純文本形式記錄在文件中置尔,安全性不高(需加密)
三杠步、cookie在HTML頁(yè)面
特點(diǎn):以鍵值對(duì)形式存儲(chǔ),用分號(hào)分隔每個(gè)cookie(字符串)
1榜轿、創(chuàng)建cookie
document.cookie = "user=caogl; path=/";
path:cookie的服務(wù)器路徑
/ :全棧訪問
/seven/front(絕對(duì)路徑) :只在front目錄下生效幽歼,包含其子目錄; expires:設(shè)定cookie的生命周期谬盐,值是一個(gè)字符串甸私,需要把過期日期轉(zhuǎn)變成字符串toGMTString()
2、獲取所有cookie
str = document.cookie;
3飞傀、對(duì)cookie設(shè)置過期時(shí)間
// 設(shè)置一天后失效
var _data = new Date();
_data.setDate(_date.getDate() + 1); // getDate() 天
var expires_str = _date.toGMTString(); // expires:過期 toGMTString:把date轉(zhuǎn)為字符串并返回結(jié)果
document.cookie = "user=caogl2; path=/;expires="+expires_str;
設(shè)置一個(gè)有過期時(shí)間的cookie颠蕴,可以分裝成函數(shù):
function setCookieFn(name,value,path,expires){
// 設(shè)置一天后失效
var current_date = new Date();
current_data.setDate(current_date.getDate() + expires);
//將日期轉(zhuǎn)換成字符串
expires_str = current_date.toGMTString();
//設(shè)置cookie 的過期日期
document.cookie = name +"="+ value +"; path ="+path+"; expires"+ expires_str ;
}
三泣刹、獲取cookie的某個(gè)鍵的鍵值
var start = str.indexOf("user=") + 5; // user= 后面的值的下標(biāo) + 5
var end = str.indexOf(";",start) // 查start后面的;的下標(biāo)
val = var.substring(start,end); // 找start開始犀被,end結(jié)束的字符串
可以封裝成函數(shù):
function getcookieFn(name){
var str = document.cookie;
var start = str.indexOf(name + "=") + name.length + 1;
var end = str.indexOf(";",start);
end == -1 : str.length : end;
var val = str.substring(start,end);
return val;
}
四椅您、cookie在PHP頁(yè)面
1、PHP:將所有的cookie存儲(chǔ)在 $_COOKIE 數(shù)組里
print_r($_COOKIE);
2寡键、創(chuàng)建cookie
cookie 在第二次請(qǐng)求時(shí)生效掀泳,當(dāng)前頁(yè)不生效。生成后刷新一下頁(yè)面生效西轩。
setcookie("num",1);
echo $_COOKIE['num'];
3员舵、獲取cookie的值
if(!empty($_COOKIE('num'))){
$_COOKIE['num'] ++;
setcookie('num',$_COOKIE['num']);
echo $_COOKIE['num'];
}else{
setcookie('num',1);
echo $_COOKIE['num'];
}
4、設(shè)一個(gè)過期時(shí)間的 cookie
時(shí)間為時(shí)間戳藕畔,比如一天后失效:24*3600秒后失效
time(): 當(dāng)前獲取的時(shí)間(毫秒)
setcookie('add',233,time()+24*3600);