纯PERL 实现COOKIE
#================================================================
# Cookie usage: setCookie($value,$time); $ok=checkCookie($value);
#================================================================
sub setCookie{
my($value,$time)=@_;$value='' unless $value;$time='' unless $time;
my $now;
my $expires;
if ($time) {
$now=GMT($time);
$expires="expires=$now;";
}
# $cook_fullstructure=qq{Set-Cookie:$value;path=$path;expires=$date};
$expires='' unless $expires;
print qq{Set-Cookie:$value;path=/;$expires\n};
} #设定网页的Cookie,一定要在网页的head()前使用,不加$pxpires参数时Cookie只出现在客户端内存,加了后IE会保存Cookie
sub checkCookie{
my $value=shift;$value='' unless $value;
my $cookie=$ENV{HTTP_COOKIE};$cookie='' unless $cookie;
my @kv=split(/; /,$cookie);
foreach (@kv) {
if($_ eq $value){
return 1;
}
}
return 0;
} #检查Cookie值
#================================================================
#=================================================================
# GMT usage: $date=GMT();#
#=================================================================
sub GMT{
my $add=$_[0];my $addSec=0;
if ($add){ #将$addSce时间换算为秒
if ($add=~/\+(\d+)s/) {
$addSec=$1;
}
elsif($add=~/\+(\d+)m/){
$addSec=$1*60;
}
elsif($add=~/\+(\d+)h/){
$addSec=$1*3600;
}
elsif($add=~/\+(\d+)d/){
$addSec=$1*86400;
}
elsif($add=~/\+(\d+)M/){
$addSec=$1*2592000;
}
elsif($add=~/\+(\d+)y/){
$addSec=$1*31536000;
}
}
my @ltime=localtime(time+$addSec-8*3600);#GMT time 格林尼治平均时间减8时为本地时间
my $year=$ltime[5] + 1900;
my $month=$ltime[4]+1;
my $day=$ltime[3];
my $hour=$ltime[2];$hour=sprintf("%02d",$hour);
my $minu=$ltime[1];$minu=sprintf("%02d",$minu);
my $sec=$ltime[0];$sec=sprintf("%02d",$sec);
my $dates=$ltime[6];
my %date =(0=>'Sun',1=>'Mon',2=>'Tue',3=>'Wed',4=>'Thu',5=>'Fri',6=>'Sat');
my %mon=(1=>'Jan',2=>'Feb',3=>'Mar',4=>'Apr',5=>'May',6=>'Jun',7=>'Jul',8=>'Aug',9=>'Sep',10=>'Oct',11=>'Nov',12=>'Dec');
return "$date{$dates},$day-$mon{$month}-$year $hour:$minu:$sec GMT";
} #返回北京的GMT(格林威治)时间 比真正的时间早8个小时噢!之所以不用gmtime()函数是因为要实现和Cookie的统一
#=================================================================
###########################
##made by MR.WATER QQ:175 785 113 #
###########################