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

飞讯云E5-2678V3 64GB,湖北十堰100G高防物理机330元/月

飞讯云官网“飞讯云”是湖北飞讯网络有限公司旗下的云计算服务品牌,专注为个人开发者用户、中小型、大型企业用户提供一站式核心网络云端部署服务,促使用户云端部署化简为零,轻松快捷运用云计算。飞讯云是国内为数不多具有ISP/IDC双资质的专业云计算服务商,同时持有系统软件著作权证书、CNNIC地址分配联盟成员证书,通过了ISO27001信息安全管理体系国际认证、ISO9001质量保证体系国际认证。 《中华...

BlueHost主机商年中618活动全场低至五折

BlueHost 主机商在以前做外贸网站的时候还是经常会用到的,想必那时候有做外贸网站或者是选择海外主机的时候还是较多会用BlueHost主机商的。只不过这些年云服务器流行且性价比较高,于是大家可选择商家变多,但是BlueHost在外贸主机用户群中可选的还是比较多的。这次年中618活动大促来袭,毕竟BLUEHOST商家目前中文公司设立在上海,等后面有机会也过去看看。他们也会根据我们的国内年中促销发...

Letbox(35美元/年),美国洛杉矶VPS终身7折

Letbox 云服务商在前面的文章中其实也有多次介绍,这个服务商其实也算是比较老牌的海外服务商,几年前我也一直有使用过他们家的VPS主机,早年那时候低至年付15-35美元左右的VPS算式比较稀缺的。后来由于服务商确实比较多,而且也没有太多的网站需要用到,所以就没有续费,最近这个服务商好像有点活动就躁动的发布希望引起他人注意。这不有看到所谓的家中有喜事,应该是团队中有生宝宝了,所以也有借此来发布一些...

cgi格式为你推荐
lunwenjiance我写的论文,检测相似度是21.63%,删掉参考文献后就只有6.3%,这是为什么?haole018.com为啥进WWWhaole001)COM怎么提示域名出错?囡道是haole001换地了吗www.niuav.com给我个看电影的网站百度指数词什么是百度指数www.1diaocha.com哪个网站做调查问卷可以赚钱 啊woshiheida这个左下角水印woshiheida的gif出处在哪呢?急!!!!!关键词分析关键词分析的考虑思路是怎样的,哪个数据是最重要的彪言彪语()言() 语铂金血痕花开易见落难寻,阶前愁杀葬花人;独把花锄偷洒泪,洒上空枝见血痕。是什么意思盗车飞侠侠盗飞车飞机怎么弄
南通服务器租用 域名备案网站 免费顶级域名 locvps java主机 大容量存储 最好的空间 上海域名 服务器托管什么意思 免费申请网站 cdn加速是什么 umax120 卡巴斯基破解版 免费mysql数据库 创建邮箱 lick cxz lamp架构 金主 国内空间 更多