天天看點

javascript cookie與PHP cookieJavaScript使用面向對象思想處理cookie

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的工作原理是類似的