如有CGI编程的COOKIE技术应用

cgi格式  时间:2021-03-15  阅读:()

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

CGI编程的COOKIE技术应用

我们在一些留言本、 BBS讨论区发贴时常会出现这种现象: 当进入发贴界面时在要求填写用户名和密码的地方就已经自动地填上了你的资料。这是什么会事呢?这是因为程序中引入了COOKIE技术的缘故。原来在你第一次登录时,程序就已在你的电脑中安装了一个COOKIE信息包,在你今后登陆时电脑就自动检索你的COOKIE并取出信息包的信息供程序调用, 因此出现上面所述的现象。COOKIE只不过是CGI程序要求浏览器持有的一个信息包, 这个信息包能够由CGI程序在任何时候收回。每当CGI程序要求创立COOKIE时, COOKIE能够从服务器传送到浏览器所属的子目录下(一般是保存在C:\WINDOWS\Temporary InternetFiles的目录下,这个过程称为COOKIE的安装。

COOKIE的安装和读出一般都由一个CGI模块来完成,下面我就将此模块的原代码公布给大家,有了这个COOKIE模块我们在编写程序时如要应用COOKIE技术能够说易如反掌。cookie的语法:http cookie的发送是经过http头部来实现的,她早于文件的传递,头部set-cookie的语法如下:

Set-cookie:name=name;expires=date;path=path;domain=domain;securename=name:需要设置cookie的值(name不能使用” ; ”和", "号) ,有多个name值时用"; "分隔例如: name1=name1 ;name2=name2;name3=name3。expires=date: cookie的有效期限,格式: expires="Wdy,DD-Mon-YYYYHH:MM:SS"

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。path=path:设置cookie支持的路径,如果path是一个路径, 则cookie对这个目录下的所有文件及子目录生效,例如: path="/cgi-bin/",如果path是一个文件, 则cookie指对这个文件生效,例如: path="/cgi-bin/cookie.cgi"。domain=domain:对cookie生效的域名,例如: domain="gzdzw.51.net"secure:如果给出此标志,表示cookie只能经过SSL协议的https服务器来传递。cookie的接收是经过设置环境变量HTTP_COOKIE来实现的, CGI程序能够经过检索该变量获取cookie信息。

以下是一个cookie的模块, 能够为你编写程序带来方便

$Cookie_Exp_Date = ' ' ;#此处设置cookie的有效时间

$Cookie_Path = ' ' ;#此处设置cookie的有效路径,默认脚本存在的目录。$Cookie_Domain = ' ' ; #此处设置cookie的有效域名,默认脚本调用的域名。$Secure_Cookie = '0' ;

@Cookie_Encode_Chars= (' \%' , ' \+' , ' \; ' , ' \, ' , ' \=' , ' \&' , ' \:\: ' , ' \s' ) ;%Cookie_Encode_Chars = (' \%' , '%25' ,

' \&' , '%26' ,

' \:\: ' , '%3A%3A' ,

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

' \s' , '+' ) ;#特殊字符的解码

@Cookie_Decode_Chars= (' \+' , ' \%3A\%3A' , ' \%26' , ' \%3D' , ' \%2C' , ' \%3B' ,' \%2B' , ' \%25' ) ;

%Cookie_Decode_Chars = (' \+' , ' ' ,

' \%3A\%3A' , ' : : ' ,

' \%26' , '&' ,

'

' \%25' , '%' ) ;#特殊字符的解码

#########获取cookie信息子程序#####################sub GetCookies {local (@ReturnCookies) = @_;local ($cookie_flag) = 0;local ($cookie, $value) ;if ($ENV{'HTTP_COOKIE' } ) {if ($ReturnCookies[0] ne ' ' ) {foreach (split(/; /, $ENV{'HTTP_COOKIE' } ) ) {#分割HTTP_COOKIE变量的字符串

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。($cookie, $value) = split(/=/) ;foreach $char (@Cookie_Decode_Chars) {

$cookie =~ s/$char/$Cookie_Decode_Chars{$char}/g;#调用转码函数$value =~ s/$char/$Cookie_Decode_Chars{$char}/g;#调用转码函数}foreach $ReturnCookie (@ReturnCookies) {if ($ReturnCookie eq $cookie) {

$Cookies{$cookie} = $value;

$cookie_flag = "1";

}

}

}

}else {foreach (split(/; /, $ENV{'HTTP_COOKIE' } ) ) {

($cookie, $value) = split(/=/) ;foreach $char (@Cookie_Decode_Chars) {

$cookie =~ s/$char/$Cookie_Decode_Chars{$char}/g;

$value =~ s/$char/$Cookie_Decode_Chars{$char}/g;

}

$Cookies{$cookie} = $value;

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。}

$cookie_flag = 1 ;

}

}return $cookie_flag;

}

##########设置Cookie信息子程序#######################sub SetSecureCookie {if ($_[0] =~ /^ [01]$/) {

$Secure_Cookie = $_[0] ;return 1 ;

}else {return 0;

}

}sub SetCookies {local (@cookies) = @_;local ($cookie, $value, $char) ;while( ($cookie, $value) = @cookies ) {foreach $char (@Cookie_Encode_Chars) {

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

$cookie =~ s/$char/$Cookie_Encode_Chars{$char}/g;#调用转码函数$value =~ s/$char/$Cookie_Encode_Chars{$char}/g;#调用转码函数}print 'Set-Cookie: ' . $cookie . '=' . $value . ' ; ' ;#设置cookie值if ($Cookie_Exp_Date) { print ' expires=' . $Cookie_Exp_Date . ' ; ' ; }#设置有效时间if ($Cookie_Path) { print ' path=' . $Cookie_Path . ' ; ' ; }#设置有效路径if ($Cookie_Domain) { print ' domain=' . $Cookie_Domain . ' ; ' ; }#设置有效域名if ($Secure_Cookie) { print ' secure' ; }print "\n";shift(@cookies) ; shift(@cookies) ;

}

}sub SetCompressedCookies {local ($cookie_name,@cookies) = @_;local ($cookie, $value, $cookie_value) ;while ( ($cookie, $value) = @cookies ) {foreach $char (@Cookie_Encode_Chars) {

$cookie =~ s/$char/$Cookie_Encode_Chars{$char}/g;

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

$value =~ s/$char/$Cookie_Encode_Chars{$char}/g;

}if ($cookie_value) { $cookie_value .= '&' . $cookie . ' : : ' . $value; }else { $cookie_value = $cookie . ' : : ' . $value; }shift(@cookies) ; shift(@cookies) ;

}

&SetCookies("$cookie_name", "$cookie_value") ;

}sub GetCompressedCookies {local ($cookie_name,@ReturnCookies) = @_;local ($cookie_flag) = 0;local ($ReturnCookie, $cookie, $value) ;if (&GetCookies($cookie_name) ) {if ($ReturnCookies[0] ne ' ' ) {foreach (split(/&/, $Cookies{$cookie_name} ) ) {

($cookie, $value) = split(/: :/) ;foreach $char (@Cookie_Decode_Chars) {

$cookie =~ s/$char/$Cookie_Decode_Chars{$char}/g;

$value =~ s/$char/$Cookie_Decode_Chars{$char}/g;

}foreach $ReturnCookie (@ReturnCookies) {

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。if ($ReturnCookie eq $cookie) {

$Cookies{$cookie} = $value;

$cookie_flag = 1 ;

}

}

}

}else {foreach (split(/&/, $Cookies{$cookie_name} ) ) {

($cookie, $value) = split(/: :/) ;foreach $char (@Cookie_Decode_Chars) {

$cookie =~ s/$char/$Cookie_Decode_Chars{$char}/g;

$value =~ s/$char/$Cookie_Decode_Chars{$char}/g;

}

$Cookies{$cookie} = $value;

}

$cookie_flag = 1 ;

}delete($Cookies{$cookie_name} ) ;

}return $cookie_flag;

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。}

########结束#################

下面是cookie信息包安装代码段

<SCRIPT LANGUAGE="JavaScript">

<!-- HIDEexpireDate = new Date;if (expireDate.getYear() < 100) {expireDate. setYear(expireDate.getYear() + 1900 + 1) ;} else {expireDate. setYear(expireDate.getYear()+1) ;

}var username = getCookie("UserName") ;var password = getCookie("Password") ;if (password == null) {var CookieName = "$username";var CookiePW = "$userpsd";if (password == null) {document.cookie = "username=" + CookieName + ";expires=" +expireDate. toGMTString() + ";";document.cookie = "password=" + CookiePW + ";expires=" +expireDate. toGMTString() + ";";

GreenCloudVPS$20/年,新加坡/美国/荷兰vps/1核/1GB/30GB,NVMe/1TB流量/10Gbps端口/KVM

greencloudvps怎么样?greencloudvps是一家国外主机商,VPS数据中心多,之前已经介绍过多次了。现在有几款10Gbps带宽的特价KVM VPS,Ryzen 3950x处理器,NVMe硬盘,性价比高。支持Paypal、支付宝、微信付款。GreenCloudVPS:新加坡/美国/荷兰vps,1核@Ryzen 3950x/1GB内存/30GB NVMe空间/1TB流量/10Gbps...

DMIT(8.72美元)日本国际线路KVM月付8折起,年付5折

DMIT.io是成立于2018年的一家国外主机商,提供VPS主机和独立服务器租用,数据中心包括中国香港、美国洛杉矶和日本等,其中日本VPS是新上的节点,基于KVM架构,国际线路,1Gbps带宽,同时提供月付循环8折优惠码,或者年付一次性5折优惠码,优惠后最低每月8.72美元或者首年65.4美元起,支持使用PayPal或者支付宝等付款方式。下面列出部分日本VPS主机配置信息,价格以月付为例。CPU:...

DogYun27.5元/月香港/韩国/日本/美国云服务器,弹性云主机

DogYun怎么样?DogYun是一家2019年成立的国人主机商,称为狗云,提供VPS及独立服务器租用,其中VPS分为经典云和动态云(支持小时计费及随时可删除),DogYun云服务器基于Kernel-based Virtual Machine(Kvm)硬件的完全虚拟化架构,您可以在弹性云中,随时调整CPU,内存,硬盘,网络,IPv4路线(如果该数据中心接入了多条路线)等。DogYun弹性云服务器优...

cgi格式为你推荐
2020双十一成绩单2020年河南全县初二期末成绩排名?网红名字被抢注谁知道这个网红叫什么名字?求帮助!地图应用谁知道什么地图软件好用,求 最好可以看到路上行人百度关键词价格查询百度竞价关键词价格查询,帮忙查几个词儿点击一次多少钱,thanks同ip站点同IP网站具体是什么意思,能换独立的吗网站检测请问,对网站进行监控检测的工具有哪些?porntimesexy time 本兮 MP3地址www.55125.cnwww95599cn余额查询www.bbb551.comHUNTA551第一个第二个妹子是谁呀??99nets.com99nets网游模拟娱乐社区怎么打不开了?????????谁能告诉我 ???、
未注册域名查询 西安电信测速 优惠码 免费ftp空间 轻博 美国十次啦服务器 seednet 共享主机 广州服务器 购买国外空间 架设邮件服务器 dnspod cxz 服务器论坛 lamp怎么读 实惠 免备案jsp空间 wordpress空间 塔式服务器 alexa搜 更多