2.如何读取复杂的cookies
以上的cookies很简单,保存的信息也很有限,下面看看如何读取复杂的cookies,比如保存用户的姓名,年龄,电话信息,cookies设置如下:
var the_cookie = "username:danny/age:40/tel:65283366"; document.cookie="multi_cookie=" + escape(the_cookie);
我用斜杠/来分割属性名称,用分号区别不同的属性名称及其属性值.当然你可以自行选择限位器.只要你注意在对cookie解码时也使用同样的限位器即可.
以下是读取上面这个cookies的代码:
function readTheCookie(the_info) { // 把cookies读入一个变量并解码 var the_cookie = document.cookie; var the_cookie = unescape(the_cookie); // 提取整个cookies的数值---the_values的值是username:danny/age:40/tel:65283366 var read_cookie = the_cookie.split("="); var the_values = read_cookie[1]; // 分割每个"选项:数值"配对并将它们存为一个数组 var sep_values = the_values.split("/"); var property_value=""; for (loop = 0; loop < sep_values.length; loop++) { property_value = sep_values[loop]; property_value是一个中间变量 var last_info = property_value.split(":"); var the_name = last_info[0]; //配对的第一个元素即"选项"的值 var the_value = last_info[1]; //配对的第二个元素即"数值"的值 the_info[the_name] = the_value; //把每个配对以"the_info[选项] = 数值" 形式保存 } }
这时侯,以下等式成立,你可以在程序中加以调用:
the_info["username"] = "danny" the_info["age"] = "40" the_info["tel"] = 65283366
3.关于cookies的二点重要提示
a.路径和域
缺省情况下cookie只能被在同一个服务器上同一个路径下设置了该cookie的网页读取,如何让某站点所有网页都能访问某一路径下特定的cookie呢?
在你的cookie中加入path=/; 如果你只想让"new" 目录中的网页可以使用该cookie,则加入path=/new;.
实现不同域名之间cookies的调用,可以在cookie中加入 "domain=xxxxx.com" 看以下实例:
function setCookie() { var the_name = prompt("输入姓名:",""); var the_cookie ="first_samp=" + escape(the_name) + ";" ; var the_cookie = the_cookie+ "path=/;"; var the_cookie = the_cookie + "domain=xxxx.com;"; //其中xxxx可以是任意的域名 document.cookie =the_cookie; }
a.cookies失效期
基本的cookie常常在用户关闭他的浏览器时会被自动删除,为解决这一问题,我们需要为cookies设定一个失效期,以使它确保存储在用户的硬盘上:
function setCookie() { var the_name = prompt("输入姓名:",""); var the_date = new Date("December 31, 2010"); var the_cookie_date =the_date.toGMTString(); //把日期转换成cookies能识别的GMT格式 var the_cookie = "first_samp=" + escape(the_name); the_cookie = the_cookie +";expires=" + the_cookie_date; document.cookie = the_cookie; }
4.为cookies正名
cookies曾在网络界引起很大的争论,直到现在,许多用户包括一些资深 的网虫,仍然把cookies与邪恶的目的联系在一起,他们甚至认为cookies是对 个人空间的侵犯,他们担心cookies信息一旦落入他人之手,自己会成为无谓的 牺牲品,其实,cookies信息是无法跨过网站来读取的,以这种目的来应用 cookies是不可能实现的,故笔者在此呼吁那些“视cookies如洪水猛兽”的人, 大可不必如此紧张,试着了解一下cookies并给它一个自由发展的空间吧。
|