• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> WEB开发 >> CGI&Perl >> 详细内容
 

推荐文章

 
 

热点文章

  • CGI教程(7)解码数据发送给CGI脚本
  • CGI编程--Perl的安装配置
  • PERL与MySQL(DBI接口)
  • PERL与MySQL
  • Perl直接入门详尽指南
  • PERL 的 CGI 文件及目录操作
  • Perl教学 第十二篇 Perl5中的引用(指针)
  • Perl连接Oracle数据库
  • 关于CGI绝对路径、相对路径和URL
  • PerlScript 的介绍之一
  • 一个程序自动刷新页面的例子(例如搜新浪小人)
  • CGI简明教程第六章
 
 

相关文章

 
 

百度搜索

 
 

在CGI中如何使用cookie的方法

  • 阅览次数:
  • 文章来源: CP整理
  • 原文作者: 不详
  • 整理日期: 2006-10-05
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大


cookie的语法:
http cookie的发送是通过http头部来实现的,他早于文件的传递,头部set-cookie的语法如下:
Set-cookie:name=name;expires=date;path=path;domain=domain;secure
name=name: 需要设置cookie的值(name不能使用“;”和", "号),有多个name值时用";"分隔例如:name1=name1;name2=name2;name3=name3。

expires=date: cookie的有效期限,格式: expires="Wdy,DD-Mon-YYYY HH:MM:SS"

path=path: 设置cookie支持的路径,如果path是一个路径,则cookie对这个目录下的所有文件及子目录生效,例如: path="/cgi-bin/",如果path是一个文件,则cookie指对这个文件生效,例如:path="/cgi-bin/cookie.cgi"。

domain=domain: 对cookie生效的域名,例如:domain="www.chinalb.com"

secure: 如果给出此标志,表示cookie只能通过SSL协议的https服务器来传递。


cookie的接收是通过设置环境变量HTTP_COOKIE来实现的,CGI程序可以通过检索该变量获取cookie信息。
 
cookie的模块:
以下是一个cookie的模块,可以为你编写程序带来方便
#########代码开始
###############################################################################
# HTTP Cookie Library Version 2.1 #
# Copyright 1996 Matt Wright mattw@worldwidemart.com #
# Created 07/14/96 Last Modified 12/23/96 #
###############################################################################
$Cookie_Exp_Date = 'Thu, 31-Dec-2050 23:00:00 GMT'; #此处设置cookie的有效时间
$Cookie_Path = ''; #此处设置cookie的有效路径,默认脚本存在的目录。
$Cookie_Domain=''; #此处设置cookie的有效域名,默认脚本调用的域名。

@Cookie_Encode_Chars = ('%', '+', ';', ',', '=', '&', '::', 's');
%Cookie_Encode_Chars = ('%', '%25',
'+', '%2B',
';', '%3B',
',', '%2C',
'=', '%3D',
'&', '%26',
'::', '%3A%3A',
's', '+'); # 特殊字符的解码

@Cookie_Decode_Chars = ('+', '%3A%3A', '%26', '%3D', '%2C', '%3B', '%2B', '%25');
%Cookie_Decode_Chars = ('+', ' ',
'%3A%3A', '::',
'%26', '&',
'%3D', '=',
'%2C', ',',
'%3B', ';',
'%2B', '+',
'%25', '%'); # 特殊字符的解码
###################################3

#获取cookie信息

###############################################################################
# GetCookies #
###############################################################################
sub GetCookies {
local(@ReturnCookies) = @_;
local($cookie_flag) = 0;
local($cookie,$value);
if ($ENV{'HTTP_COOKIE'}) {
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; #调用转码函数
}
$Cookies{$cookie} = $value;
}
$cookie_flag = 1;
}
return $cookie_flag;
}


# 设置Cookie信息
###############################################################################
# SetCookies #
###############################################################################
sub SetCookies {
if ($HeaderDefine ne "TRUE") {
print "Content-type: text/htmln"; # 浏览器头部信息开始
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 . ';'; #设置有效域名
}
print "n"; #浏览器头部信息结束
shift(@cookies); shift(@cookies);
}
$HeaderDefine = "TRUE";
}
}

1; #return true

##########代码结束

模块的调用方法:

设置cookie:
&SetCookies('NAME', $name, 'PASS', $pass); #设置NAME 和PASS两个cookie值.

取cookie:

&GetCookies;
$name=$Cookies{'NAME'};
$pass=$Cookies{'PASS'};

 
Cookie使用的注意事项:
发送cookie时由于是通过http头发送的,而http头部只能发送一次,因此在使用cookie模
快时不能再使用 print "Content-type: text/htmlnn";的头部输出语句,否则程序会报错   

上一篇:ASP抽取数据的执行效率
下一篇:比AcdSee功能还强大的图片处理、编辑软件,推荐下载!
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号