微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题与Cookies结合定制个性化访问页面
栏目互联网时代
作者周辉腾 段臣斌
发布2000年第16期
  某些Web站点在你硬盘上用很小的文本文件存储了一些信息,这些文件就称为 Cookies(俗称“小甜饼”),它将记录你在某Web站点上的种种操作。Cookies存放在c:\windows\cookies目录下,一般形式为:用户名@网站名。
  关于Cookies一直是最有争议的东东——它会不会是网上间谍,将咱硬盘上的好东东尽数端走,或是一双墙外的眼睛,在网的那边监视你的一举一动?哈哈!不用慌!Cookies仅仅是你在访问某特定站点时它在你硬盘上储存的一组数据,它记录了你在这个站点上的一些访问信息,且只能被创建这个Cookies的站点读回。正如许多事物一样,Cookies既有惹人讨厌的一面,但也有它便利的一面——我们可以利用它来记录访客的偏好,达到为用户定制“个性化”页面的目的……如何才能访问这些Cookies呢?一种是使用JavaScript;一种是使用ASP,通过使用ASP内置的两个对象response和request进行操作。下面就分别列出这它们的使用实例。
  一、使用JavaScript的IndexOf方法:
  第一步:在页面的某一位置插入以下脚本(最好是在页面的前部,如<head>……</head>之间):
  <script language="JavaScript"><!--
  function GetCookie(Name){ //检索cookies的通用函数
  var search=Name+'=';
  if(document.cookie.length>0){ //如果存在本文档的cookies
  offset=document.cookie.indexOf(search);
  if(offset!=-1){ //如果以Name为名的cookie存在
   offset+=search.length; //设置索引开始位置
   end=document.cookie.indexOf(';',offset); //设置索引结束位置
   if(end==-1) end=document.cookie.length;  //如果本cookie是此cookies文档的最后一项
   return unescape(document.cookie.substring(offset,end)); //返回检索到的cookie值
  }
  else return null; //不存在就返回"null"
   }
  }
  function SetCookie(name,value){ //设置cookies的通用函数
   var argv=SetCookie.arguments;
   var argc=SetCookie.arguments.length;
   var expires=(argc>2)?argv[2]:null; //如果参数大于三个,那么将第三个参数的值赋给" expires",否则使用默认的"null"。下同。
   var path=(argc>3)?argv[3]:null;
   var domain=(argc>4)?argv[4]:null;
   var secure=(argc>5)?argv[5]:false;
  //利用所获取的参数设置cookies,并将cookies的值(value)用escape函数编码
   document.cookie=name+"="+escape(value)+((expires==null)?"":(";expires="+expires.toGMTString()))+((path==null)?"":(";path="+path))+((domain==null)?"":(";domain="+domain))+((secure==true)?";secure":"");
  }
  -->
  </script>
  第二步:在你想让读者自己设置访问选项的页面中加入以下代码:
  1.在<head>……</head>之间加入以下代码:
  <script language="JavaScript"><!--
  function iffirst(){
   var expDays=365;
   var exp=new Date();
   exp.setTime(exp.getTime() + (expDays*24*60*60*1000));
   var iffirst=GetCookie('setup');
   if(iffirst==null){
  //假设你的个性化设置页面是http://ctsight.topcool.net/documents/setup.html,在这个页面中你可以以表单按钮或超链接的形式调用SetCookie函数,让你的访客定制访问参数;当他们第二次访问你的站点时,可以用GetCookie函数把SetCookie纪录的参数读出来,然后根据这些参数设置不同的访问选项,达到“个性化”的目的。限于篇幅,本文就不对这个setup.html页面进行讨论,有兴趣的可以来信共同探讨。
  if(confirm('你好像是第一次访问本站,要设置一下访问参数吗?')) top.location='http://ctsight.topcool.net/documents/setup.html';
  else if(confirm('你已取消设置,你希望以后访问本站时不再显示该提示吗?')) SetCookie('setup','no',exp);
   }
  }
  -->
  </script>
  2.修改此页的<body>标签:
  <body onload="iffirst()">
  二、使用ASP的内置对象:
  写入cookies:
   response.cookies("待写入的cookies名称")="待写入数据"
   例如: response.cookies("usename")="dcb"
  读取cookies:
   读取数据=request.cookies("待读取的cookies名称")
   例如: usename=request.cookies("user")
  以下是用ASP访问cookies的实例程序cookies.asp
  功能:将用户第一次浏览时输入的姓名,使用cookies存储到用户端的硬盘上,下次再次光临时,从用户端的cookies读取数据,直接得知来访者的姓名
  <% if request.form("username")<>" " then
  response.cookies("userid") = request.form("username")
   response.cookies("userid").expires=#july 1,2001#
  ;必须使用expires设定有效期限,cookies才会真正写入用户端的硬盘,否则将只暂时存入站点服务器的存储器当中,不会被保存起来。  end if %>
  ; 使用cookies将用户数据存到用户硬盘上
  ; response.cookies程序码必须位于<HTML>之前。
  <html>
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  <title>cookies</title>
  </head>
  <body>
  <% username=request.cookies("userid") %>
  ;读取用户硬盘上的cookies
  <% if username=" " then %>
  <form action="cookies.asp" method="POST">
  <p>你的姓名:<input type="text" name="username"> <input type="submit" value="Submit"></p>
  </form>
  ;如果cookies中没有用户数据,将要求重新输入用户数据
  <% end if%>
  </body>
  </html>
  <% =username %>大驾光临!