cookies

一直都是簡單去js實現cookie的一些操作,今天把js對cookie操作系統的整理了一遍,包括:js讀取cookie,js添加cookie,js刪除cookie,示例如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
<title>cookie處理函數練習(爲我所寫,非我所想:改善面向對象)</title>
<script language="JavaScript" type="text/javascript">
function addCookie(objName,objValue,objHours){//添加cookie
var str = objName + "=" + escape(objValue);
if(objHours > 0){//爲0時不設定過期時間,瀏覽器關閉時cookie自動消失
var date = new Date();
var ms = objHours*3600*1000;
date.setTime(date.getTime() + ms);
str += "; expires=" + date.toGMTString();
}
document.cookie = str;
alert("添加cookie成功");
}

function getCookie(objName){//獲取指定名稱的cookie的值
var arrStr = document.cookie.split("; ");
for(var i = 0;i < arrStr.length;i ++){
var temp = arrStr[i].split("=");
if(temp[0] == objName) return unescape(temp[1]);
}
}

function delCookie(name){//爲了刪除指定名稱的cookie,可以將其過期時間設定爲一個過去的時間
var date = new Date();
date.setTime(date.getTime() - 10000);
document.cookie = name + "=a; expires=" + date.toGMTString();
}
//讀取出來所有的cookie字筗串了
function allCookie(){//讀取所有保存的cookie字符串
var str = document.cookie;
if(str == ""){
str = "沒有保存任何cookie";
}
alert(str);
}

function $(m,n){
return document.forms[m].elements[n].value;
}

function add_(){
var cookie_name = $("myform","cookie_name");
var cookie_value = $("myform","cookie_value");
var cookie_expireHours = $("myform","cookie_expiresHours");
addCookie(cookie_name,cookie_value,cookie_expireHours);
}

function get_(){
var cookie_name = $("myform","cookie_name");
var cookie_value = getCookie(cookie_name);
alert(cookie_value);
}

function del_(){
var cookie_name = $("myform","cookie_name");
delCookie(cookie_name);
alert("刪除成功");
}
</script>

//添加cookie
function addCookie(name,value,expires,path,domain){
var str=name+"="+escape(value);
if(expires!=""){
var date=new Date();
date.setTime(date.getTime()+expires*24*3600*1000);//expires單位爲天
str+=";expires="+date.toGMTString();
}
if(path!=""){
str+=";path="+path;//指定可訪問cookie的目錄
}
if(domain!=""){
str+=";domain="+domain;//指定可訪問cookie的域
}
document.cookie=str;
}
//取得cookie
function getCookie(name){
var str=document.cookie.split(";")
for(var i=0;i<str.length;i++){
var str2=str[i].split(”=”);
if(str2[0]==name)return unescape(str2[1]);
}
}
//刪除cookie
function delCookie(name){
var date=new Date();
date.setTime(date.getTime()-10000);
document.cookie=name+”=n;expire=”+date.toGMTString();




[下面講的經個人覺得比較好哦!]
我們當然還得介紹cookie的四個屬性。這些屬性用下面的格式加到字符串值後面:

name=<value>[; expires=<date>][; domain=<domain>][; path=<path>][; secure]

名稱=<值>[; expires=<日期>][; domain=<域>][; path=<路徑>][; 安全]

<value>, <date>, <domain> 和 <path> 應當用對應的值替換。<date> 應當使用GMT格式,可以使用Javascript腳本語言的日期類Date的.toGMTString() 方法得到這一GMT格式的日期值。方括號代表這項是可選的。比如在 [; secure]兩邊的方括號代表要想把cookie設置成安全的,就需要把"; secure" 加到cookie字符串值的後面。如果"; secure" 沒有加到cookie字符串後面,那麼這個cookie就是不安全的。不要把尖括號<> 和方括號[] 加到cookie裏(除非它們是某些值的內容)。設置屬性時,不限屬性,可以用任何順序設置。

下面是一個例子,在這個例子裏,cookie "username" 被設置成在15分鐘之後過期,可以被服務器上的所有目錄訪問,可以被"mydomain.com"域裏的所有服務器訪問,安全狀態爲安全。
// Date() 的構造器設置以毫秒爲單位
// .getTime() 方法返回時間,單位爲毫秒
// 所以要設置15分鐘到期,要用60000毫秒乘15分鐘
var expiration = new Date((new Date()).getTime() + 15 * 60000);
document.cookie = "username=" + escape(form.username.value)+ "; expires ="
+ expiration.toGMTString() + "; path=" + "/" + "; _
domain=" + "mydomain.com" + "; secure";


// 我們定義一個函數,用來讀取特定的cookie值。[得到指定名字的cookie對象哦!]
function getCookie(cookie_name)
{
var allcookies = document.cookie;
var cookie_pos = allcookies.indexOf(cookie_name);

// 如果找到了索引,就代表cookie存在,
// 反之,就說明不存在。
if (cookie_pos != -1)
{
// 把cookie_pos放在值的開始,只要給值加1即可。
cookie_pos += cookie_name.length + 1;
var cookie_end = allcookies.indexOf(";", cookie_pos);

if (cookie_end == -1)
{
cookie_end = allcookies.length;
}

var value = unescape(allcookies.substring(cookie_pos, cookie_end));
}

return value;
}

// 調用函數
var cookie_val = getCookie("username");


3.爲什麼我設置了cookie的過期時間如果爲關閉的時候就自動清空的話怎麼沒用呢?
來研究一下JSP操縱cookie?
Cookie概念:
Cookie的格式實際上是一段純文本信息, 由服務器隨着網頁一起發送到客戶端, 並保存在客戶端硬盤中指定的目錄的. 大家都傳說Cookie會造成嚴重的安全威脅什麼的, 其實不是這麼回事情. 服務器讀取Cookie的時候, 只能夠讀取到這個服務器相關的信息. 而且, 瀏覽器一般只允許存放300個Cookie, 每個站點最多存放20個, 而且, 每個Cookie的大小現在在4K, 根本不會佔用多少空間. 並且, Cookie是有時效性質的. 例如, 設置了Cookie的存活時間爲1分鐘, 則一分鐘後這個Cookie就會被瀏覽器刪除

Cookie版本:
目前有兩個版本:
版本0 : 由Netscape公司制定的,也被幾乎所有的瀏覽器支持. Java中爲了保持兼容性, 目前只支持到版本0, Cookie的內容中不能空格,方括號,圓括號,等於號(=),逗號,雙引號,斜槓,問號,@符號,冒號,分號。
版本1 : 根據RFC 2109文檔制定的. 放寬了很多限制. 上面所限制的字符都可以使用. 但爲了保持兼容性, 應該儘量避免使用這些特殊字符.

JSP中對Cookie的操作: 類型 方法名 方法解釋
String getComment() 返回cookie中註釋,如果沒有註釋的話將返回空值.
String getDomain() 返回cookie中Cookie適用的域名. 使用getDomain() 方法可以指示瀏覽器把Cookie返回給同 一域內的其他服務器,而通常 Cookie只返回給與發送它的服務器名字完全相同的服務器。注意域名必須以點開始
int getMaxAge() 返回Cookie過期之前的最大時間,以秒計算。
String getName() 返回Cookie的名字
String getPath() 返回Cookie適用的路徑。如果不指定路徑,Cookie將返回給當前頁面所在目錄及其子目錄下 的所有頁面。
boolean getSecure() 如果瀏覽器通過安全協議發送cookies將返回true值,如果瀏覽器使用標準協議則返回false值。
String getValue() 返回Cookie的值。筆者也將在後面詳細介紹getValue/setValue。
int getVersion() 返回Cookie所遵從的協議版本。
void setComment(String purpose) 設置cookie中註釋
void setDomain(String pattern) 設置cookie中Cookie適用的域名
void setMaxAge(int expiry) 以秒計算,設置Cookie過期時間。
void setPath(String uri) 指定Cookie適用的路徑。
void setSecure(boolean
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章