ReadyGo!技术成就梦想 >> 网络编程 >> CGI >> 关于cgi读写cookie的编程

关于cgi读写cookie的编程

ReadyGo!技术成就梦想 www.efish.cn efish 2007-10-8 12:06:49
    cookie的用途相信大家都知道了,有时我们的cgi需要记录读取某个来访者的信息,例如该来访者使用该cgi的情况,那就得用到cooike技术,下面就讨论一下如何用cgi来记录、读取来访者计算机中的cookie。

  cookie在不同的浏览器上的存储方式是不同的,但这并不存在不兼容的问题,因为web服务器与浏览器之间是通过http响应头实现互相传送cookie的信息的,我们在读写cookie时不必理会其在客户端是怎么存储的。

  在cgi向来访者的计算机中写入一条cookie时,cgi需要向浏览器发送一个响应头:

set-cookie:name1=value;name2=value2;exprires=date;path=path;domiam=domain_name;secure

  现在逐个来解释以上响应头各项的含义,各项内容是用分号阁开的

  我们看到 name1=value和name2=value2 就是你要设置的cookie的内容,它是以名字=值的方式发送的,而name=value中不可以有冒号、逗号、和空格,但可以用%xx代替,xx为一个16进制数;

exprires=date项是有关cookies的生存期,即该cookie的有效期,有效期的时间格式是格林威治时间格式:wdy,dd-mon-yyyy hh:mm:ss gmt
这一项在写入cooie时是可选的,但不设置的话浏览器与web服务器的一次连接结束后,cookie就过了有效期;

domian项定义哪些主机可以读取cookies,通常cookie存放的都不重要的信息,如果你要存放的的信息不大重要,这一项也不用设置;

path项是定义了一台主机上哪些www资源可以读取你所设置的cookie,如果path=/ 则这台主机上所有www资源可以读取你所设置的cookie;

secure是有关加密传送我们可不用理会。

  如果你在一台支持cookie的客户端设置了cookie,当这个客户端在次来访问时,浏览器会向你的cgi所在的web服务器发送一条http响应头,这个响应头为:
cookie:name1=value;name2=value2;exprires=date;path=path;domiam=domain_name;secure
根据这个http响应头web服务器的环境变量 http_cookie=:name1=value;name2=value2
我们对这个环境变量的内容进行分解就可以的到我我们要的信息。

  以下给出我写的读写cookie的两段perl程序,你也可以把它改写为c语言

设置cookie:

print "content-type:text/htmln";
print "set-cookie:name1=zjxyz;expires=thursdday,01-jan-2000 12:00:00 gmtn";
print "set-cookie:name2=ken;expires=thursdday,01-jan-2000 12:00:00 gmtn";
print "set-cookie:name3=ken;expires=thursdday,01-jan-2000 12:00:00 gmtnn";

  读取cookie和分解的过程:

@pairs = split(/&/, $env{"http_cookie"});
foreach $pair (@pairs){
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%()/pack("c", hex($1))/eg;
$cookie{$name} = $value;}

相关文章
cgi简明教程 cgi简明教程 目录 第一章:基础的基础 1.1 为什么使用cgi? 1.2 cgi是什么? 1.3 选择你熟悉的编程语言 1.4..
第十章 cgi教程 毫无疑问,当今web程序设计中最吸引人而且最复杂的当然就是web数据库程序了。平心而论,其复杂高深的程度决..
第九章 cgi简明教程 guest-book在网页设计中占有相当重要的地位,以至于可以和记数器相提并论。留言本可以用许多编程语言来设计..
第八章 cgi简明教程 form to mail 所谓form to mail的功能,就是在页面上建立一个表单(form),该表单内记录着用户的信息,..
第七章 cgi教程 上传文件是建立交互式网站的一个重要手段。一般来说,考虑到cgi程序的安全和一些敏感问题,服务器是不会轻易..
第六章 cgi简明教程 对于本章的程序——选票程序,我不想多说什么。我只是想在本程序内教给大家如何 使用perl语言或c语言如何..
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想