javascript cookie與PHP cookie
用Cookie實作JAVASCRIPT的變量傳遞到PHP中 1. 在JAVASCRIPT中設定COOKIE:document.cookie="cookiename="+value+";path=/"
2. 在PHP中用$HTTP_COOKIE_VARS["cookiename"]的方式讀取。
javascript 中cookie随浏覽器關閉消失
JavaScript使用面向對象思想處理cookie
JavaScript中Math對象的功能,它其實就是通過Math這個全局對象,把所有的數學計算相關的常量和方法都聯系到一起,作為一個整體使用,提高了封裝性和使用效率。cookie的處理也可以按照這種方法來進行。
需求分析
對于cookie的處理,事實上隻是封裝一些方法,每個對象不會有狀态,是以不需要建立一個cookie處理類,而隻用一個全局對象來聯系這些cookie操作。對象名可以了解為命名空間。對cookie操作經常以下操作。
(1)設定cookie包括了添加和修改功能,事實上如果原有cookie名稱已經存在,那麼添加此cookie就相當于修改了此cookie。在設定cookie的時候可能還會有一些可選項,用于指定cookie的聲明周期、通路路徑以及通路域。為了讓cookie中能夠存儲中文,該方法中還需要對存儲的值進行編碼。
(2)删除一個cookie,删除cookie隻需将一個cookie的過期事件設定為過去的一個時間即可,它接收一個cookie的名稱為參數,進而删除此cookie。
(3)取一個cookie的值,該方法接收cookie名稱為參數,傳回該cookie的值。因為在存儲該值的時候已經進行了編碼,是以取值時應該能自動解碼,然後傳回。
針對這些需求,下一小節将實作這些功能。
建立Cookie對象
因為是作為類名或者命名空間的作用,是以和Math對象類似,這裡使用Cookie來表示該對象:
var Cookie=new Object();
實作設定Cookie的方法
方法為:setCookie(name,value,option);其中name是要設定cookie的名稱;value是設定cookie的值;option包括了其他選項,是一個對象作為參數。其實作如下:
Cookie.setCookie=function(name,value,option){
//用于存儲指派給document.cookie的cookie格式字元串
var str=name+"="+escape(value);
if(option){
//如果設定了過期時間
if(option.expireDays){
var date=new Date();
var ms=option.expireDays*24*3600*1000;
date.setTime(date.getTime()+ms);
str+="; expires="+date.toGMTString();
}
if(option.path)str+="; path="+path; //設定通路路徑
if(option.domain)str+="; domain"+domain; //設定通路主機
if(option.secure)str+="; true"; //設定安全性
}
document.cookie=str;
}
實作取Cookie值的方法
方法為:getCookie(name);其中name是指定cookie的名稱,進而根據名稱傳回相應的值。實作如下:
Cookie.getCookie=function(name){
var cookieArray=document.cookie.split("; "); //得到分割的cookie名值對
var cookie=new Object();
for(var i=0;i<cookieArray.length;i++){
var arr=cookieArray[i].split("="); //将名和值分開
if(arr[0]==name)return unescape(arr[1]); //如果是指定的cookie,則傳回它的值
}
return "";
}
實作删除Cookie的方法
方法為:deleteCookie(name);其中name是指定cookie的名稱,進而根據這個名稱删除相應的cookie。在實作中,删除cookie是通過調用setCookie來完成的,将option的expireDays屬性指定為負數即可:
Cookie.deleteCookie=function(name){
this.setCookie(name,"",{expireDays:-1}); //将過期時間設定為過去來删除一個cookie
}
通過下面的代碼,整個Cookie對象建立完畢後,可以将其放到一個大括号中來定義,例如:
var Cookie={
setCookie:function(){},
getCookie:function(){},
deleteCookie:function(){}
}
通過這種形式,可以讓Cookie的功能更加清晰,它作為一個全局對象,大大友善了對Cookie的操作,例如:
Cookie.setCookie("user","jack");
alert(Cookie.getCookie("user"));
Cookie.deleteCookie("user");
alert(Cookie.getCookie("user"));
上面的代碼就先建立了一個名為user的cookie,然後删除了該cookie。兩次alert輸出語句顯示了執行的效果。
本節通過建立一個Cookie對象來處理cookie,友善了操作,也展現了面向對象的程式設計思想:把相關的功能封裝在一個對象中。考慮到JavaScript語言的特點,本章沒有選擇需要建立類的面向對象程式設計的例子,那和一般面向對象語言沒有大的不同。而是以JavaScript中可以直接建立對象為特點介紹了Cookie對象的實作及其工作原理。事實上這也和JavaScript内部對象Math的工作原理是類似的