如有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() + ";";

云如故枣庄高防(49元)大内存2H2G49元8H8G109元

云如故是一家成立于2018年的国内企业IDC服务商,由山东云如故网络科技有限公司运营,IDC ICP ISP CDN VPN IRCS等证件齐全!合法运营销售,主要从事自营高防独立服务器、物理机、VPS、云服务器,虚拟主机等产品销售,适合高防稳定等需求的用户,可用于建站、游戏、商城、steam、APP、小程序、软件、资料存储等等各种个人及企业级用途。机房可封UDP 海外 支持策略定制 双层硬件(傲...

Gigsgigscloud($9.8)联通用户优选日本软银VPS

gigsgigsCloud日本东京软银VPS的大带宽配置有100Mbps、150Mbps和200Mbps三种,三网都走软银直连,售价最低9.8美元/月、年付98美元。gigsgigscloud带宽较大延迟低,联通用户的好选择!Gigsgigscloud 日本软银(BBTEC, SoftBank)线路,在速度/延迟/价格方面,是目前联通用户海外VPS的最佳选择,与美国VPS想比,日本软银VPS延迟更...

HostYun全场9折,韩国VPS月付13.5元起,日本东京IIJ线路月付22.5元起

HostYun是一家成立于2008年的VPS主机品牌,原主机分享组织(hostshare.cn),商家以提供低端廉价VPS产品而广为人知,是小成本投入学习练手首选,主要提供基于XEN和KVM架构VPS主机,数据中心包括中国香港、日本、德国、韩国和美国的多个地区,大部分机房为国内直连或者CN2等优质线路。本月商家全场9折优惠码仍然有效,以KVM架构产品为例,优惠后韩国VPS月付13.5元起,日本东京...

cgi格式为你推荐
云计算什么叫做“云计算”?嘉兴商标注册我在濮院想注册一个羊毛衫商标?该怎么做?杰景新特杰德特这个英雄怎么样psbc.com怎样登录wap.psbc.com月神谭求男变女类的变身小说www.javmoo.comjavimdb怎么看www.6vhao.com有哪些电影网站m88.comm88.com现在的官方网址是哪个啊 ?m88.com分析软件?本冈一郎只想问本冈一郎的效果真的和说的一样吗?大概多长时间可以管用呢?用过的进!铂金血痕求Hp卢修斯,v大,盖特勒重生文,cp不要斯内普和邓不利多,名子和简介就行.最好是晋江的.谢谢.
fc2最新域名 国外免费vps 谷歌域名邮箱 winscp 香港加速器 密码泄露 win8升级win10正式版 蜗牛魔方 网站cdn加速 100m空间 789电视网 免费吧 怎么建立邮箱 下载速度测试 东莞服务器托管 注册阿里云邮箱 美国迈阿密 测速电信 学生机 windows2008 更多