cookie與session 區(qū)別
下面是cookie與session各自的特點(diǎn)币喧,其實(shí)通過(guò)它們特點(diǎn)的不同就能看出他們的區(qū)別柜裸,我就不總結(jié)區(qū)別了,可以將他們的特性進(jìn)行比較粱锐,不同之處就是他們的區(qū)別疙挺。
cookie特性
1.cookie是存儲(chǔ)在瀏覽器客戶(hù)的一小片數(shù)據(jù);
2.cookie可以同時(shí)被前臺(tái)與后臺(tái)操作怜浅;
3.cookie可以跨頁(yè)面存阮砣弧;
4.cookie是不可以跨服務(wù)器訪(fǎng)問(wèn)的恶座;
5.cookie有限制搀暑; 每個(gè)瀏覽器存儲(chǔ)的個(gè)數(shù)不能超過(guò)300個(gè),每個(gè)服務(wù)器不能超過(guò)20個(gè)跨琳,數(shù)據(jù)量不能超過(guò)4K自点;
6.cookie是有生命周期的,默認(rèn)與瀏覽器相同脉让,如果進(jìn)程退出桂敛,cookie會(huì)被銷(xiāo)毀
session特性
- seesion數(shù)據(jù)存儲(chǔ)在服務(wù)器端;
- 每一個(gè)會(huì)話(huà)分配一個(gè)單獨(dú)的session_id;
- 該session_id通過(guò)cookie傳送到前臺(tái)溅潜,默認(rèn)的session_id名稱(chēng)是PHPSESSIONID
- 前臺(tái)只能看到session的ID术唬,而不能修改session值
- 使用session之前需要先開(kāi)啟會(huì)話(huà)
- session存儲(chǔ)在session數(shù)組$_SESSION
- session存儲(chǔ)方式比較安全,但是如果session數(shù)量過(guò)多滚澜,會(huì)導(dǎo)致服務(wù)器性能下降
cookie與session語(yǔ)法
cookie
- 前端使用語(yǔ)法:
// 設(shè)置一個(gè)cookie
document.cookie = "user=ltt; age=18 ;like= h5";
// 讀取所有的cookie
str = document.cookie;
//從所有cookie取出一個(gè)特定名的cookie值
start = str.indexOf("num=") + 4;
end = str.indexOf(";",start);
// 使用substring獲得值
var val = str.substring(start,end);
由于cookie是以鍵值對(duì)形式存儲(chǔ)的粗仓,用每個(gè)分號(hào)分割每個(gè)cookie,如下圖设捐,所以我們從cookie中取出一個(gè)特定名的cookie值需要使用上面代碼的js字符串的一些方法借浊。
我們經(jīng)常會(huì)需要設(shè)置一個(gè)cookie和取cookie里的值,因此我們可以封裝兩個(gè)函數(shù)萝招,一個(gè)設(shè)置cookie蚂斤,一個(gè)取cookie的值。大家需要用的可以直接拷貝即寒。
// 取cookie值 參數(shù)為cookie你要取得值所對(duì)應(yīng)的名稱(chēng)
function getcookie(name){
var str = document.cookie;
start = str.indexOf(name+"=")+ name.length+1;
end = str.indexOf(";",start);
end = end == -1 ? str.length:end;
// 使用substring獲得值
var val = str.substring(start,end);
return val;
}
// 設(shè)置cookie
// 參數(shù)(名稱(chēng)橡淆,名稱(chēng)對(duì)應(yīng)的值,路徑母赵,過(guò)期時(shí)間)
function setCookie(name,value,path,expires){
// 設(shè)置一天之后失效
var current_date = new Date();
// 將日期設(shè)置為一天之后的日期
current_date.setDate(current_date.getDate() + 1);
// 將日期轉(zhuǎn)成GMT對(duì)象
expires_str = current_date.toGMTString();
// 設(shè)置cookie的過(guò)期日期
document.cookie = name + "=" + value+"; path="+path+"; expires="+expires_str;
}
2.后臺(tái)使用的方法
后臺(tái)設(shè)置語(yǔ)法比較簡(jiǎn)單逸爵,就一句代碼,如下凹嘲;
// 過(guò)期時(shí)間是時(shí)間戳师倔,比如一天后失效,那就是24*3600秒失效
setcookie("newMember","ltt",time()+24*3600);
session
注意:使用session之前都必須先開(kāi)啟會(huì)話(huà),使用 session_start(); 開(kāi)啟會(huì)話(huà)
session_start();
$_SESSION['user'] = 'ltt';
$_SESSION['age'] = 10;
介紹一個(gè)header()函數(shù):輸出自定義http頭文件
if(!empty($_SESSION['user'])){
// header函數(shù)輸出自定義http頭文件
// header("Location: url") 指定當(dāng)前頁(yè)面跳轉(zhuǎn)到url頁(yè)面
header("Location:index2.html");
}else{
header("Location:login.html");
}