动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   网页设计 → 阅读文章

 用OO思路处理Cookies

作者:本站,未知 来源:CSDN 
阅读 数 248 人次 , 2008-5-14 15:37:00 

浏览器能够通过Cookies保留有关数据。象Windows的注册表一样,用户不必知道Cookies的具体位置,浏览器能找到这些数据。第六代的浏览器,不管是IE还是NS都支持document.cookie属性。通过这个属性来读取或修改Cookies的值。不过Cookies的存储形式是非结构化的长字符串,需要经过相应的解析后才有意义。

Cookies的表达如下,除了name=value以外,其它均为可选:
name=value;
expires=date;
domain=domainname
path=pathname;
secure;

例如:
User=HockeyDude; expires=Thu,01-Jan-70 00:00:01 GMT; domain=www.mydomain.com; path=/images; secure;
Pass=Gretzky; expires=Thu,01-Jan-70 00:00:01 GMT; domain=www.mydomain.com; path=/images; secure;

这么长的两个字符串只代表了两个Cookies。如果还要再加上电子信箱或其他信息就还得加长字符串。通常都是通过分解这样的字符串来取得各个变量或元素的。这实在是费时费力的事。

我使用面向对象设计(Object Oriented Design,OOD)的思路来编写Cookies处理函数,其特点如下:

便于增删子项。这是很重要的,有些浏览器限制Cookies的使用数量。
通过修改函数可以容易地修改时效数据。通常的做法很麻烦,要拷贝Cookies,删除原Cookies,修改并重写Cookies。
Cookies和它的子项存放在数组里。可以根据需要快速而有效地进行修改。这样也无须解析那长长的字符串。

Cookies对象的使用
以下是对象的公有方法:

方括号[]内是可选参数
//构造
Cookie([定界符,缺省为句点]) - 构造函数

//初始化
GetCookieCount() - 返回Cookies数量
Fetch(index) - 返回指定索引的Cookies名字
Create(name, days) - 创建Cookies及其时效天数
Modify(name, days) - 修改Cookies的时效天数
Delete(name) - 删除Cookies及其子项
GetCount(name) - 返回Cookies的子项数量
AddItem(name, value) - 增加一个子项
GetItem(name, index) - 返回指定索引的子项
DelItem(name, index) - 删除指定的子项

//存取
Load() - 读取Cookies
Save() - 存储Cookies

下面是应用实例:

<!-- HTML网页内调用Cookies对象 -->
<script language="javascript" src="cookie.js"></script>

<!-- 构造并初始化Cookies -->

<script language="javascript">
  //Cookies类实例化
  var myCookie = new Cookie();

  //如果没有Cookies,就创建一个新的Cookies
  if(!myCookie.Load()){  
 myCookie.Create("User", 10);  //创建用户(User)Cookies,有效期10天
 myCookie.Create("Pass", 15);
 
 myCookie.AddItem("User", "Gretzky");  //增加一个用户子项
 myCookie.AddItem("User", "Lemieux");
 myCookie.AddItem("User", "Sakic");
 myCookie.AddItem("User", "Pronger");
 myCookie.AddItem("Pass", "Hockey");

 //存储Cookies
 myCookie.Save();
  }
  else{ //如果存在Cookies,直接加载
 //显示Cookies的各个子项
 for(i=0; i<myCookie.GetCookieCount(); i++)
 {
    for(j=0; j<myCookie.GetCount(myCookie.Fetch(i)); j++)
      alert(myCookie.Fetch(i)+"="+myCookie.GetItem(myCookie.Fetch(i),j));
 }
  }
</script>

这种OOD的Cookies类富有弹性,可用于各种应用。比如购物卡,登录,浮动窗位置等等。你可以充分发挥你的想象力。

  
 本文Tagscookies  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:用正则表达式作校验
· 下一篇:可输入的select
· Frontpage2000中文教程:第四章 Frontpage2000也疯狂(2)
· 色系表-终极配色手册
· 在串中查找第i个子串的位置及效率评测
· XHTML代码规范
· 语言(文化)代码与国家地区对照表


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077