| 多遊さんのところでも前に使っていた BBS-TypeN
ですが、
http://tayu.o0o0.jp/cgi-bin/bbs/bbs.cgi
こちらはオリジナルから私が相当改変したので
元々かどうかは忘れましたが、次のように
pack unpack していますね。
※自分のところのソースのタイムスタンプは
2006-05-17 になっていました。15年も前か
最終バージョンは…
# ■クッキーデータのデコード
#
sub CookieDecode
{
foreach (split(/\;/, $ENV{'HTTP_COOKIE'})) {
($Key, $Value) = split(/=/);
$Value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack( "C", hex( $1 ) )/eg;
$COOKIES{$Key} = $Value;
}
($COOKIE{'name'},
$COOKIE{'mail'},
$COOKIE{'url'},
$COOKIE{'message_no'},
$COOKIE{'text'},
$COOKIE{'link'},
$COOKIE{'vlink'},
$COOKIE{'alink'},
$COOKIE{'bgcolor'},
$COOKIE{'background'},
$COOKIE{'vertical_bar_width'},
$COOKIE{'vertical_bar'},
$COOKIE{'vertical_image'},
$COOKIE{'horizon_bar'},
$COOKIE{'horizon_image'},
$COOKIE{'hrline'},
) = split( /\"/, $COOKIES{$CGIName});
if( $FORM{'function'} eq "write" )
{
$FORM{'name'} || ($COOKIE{'name'} = "");
$FORM{'mail'} || ($COOKIE{'mail'} = "");
$FORM{'url'} || ($COOKIE{'url'} = "");
}
}
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
# ■クッキーの設定
#
sub CookieSet
{
$MessageNo = scalar( @LogFile ) + ($HEAD{'log'} - 1) * $MaxLog;
$FORM{'name'} ? $COOKIE{'name'} = $FORM{'name'} : $FORM{'name'} = $COOKIE{'name'};
$FORM{'mail'} ? $COOKIE{'mail'} = $FORM{'mail'} : $FORM{'mail'} = $COOKIE{'mail'};
$FORM{'url'} ? $COOKIE{'url'} = $FORM{'url'} : $FORM{'url'} = $COOKIE{'url'};
$COOKIE{'text'} && ($Text = $COOKIE{'text'});
$COOKIE{'link'} && ($Link = $COOKIE{'link'});
$COOKIE{'vlink'} && ($VLink = $COOKIE{'vlink'});
$COOKIE{'alink'} && ($ALink = $COOKIE{'alink'});
$COOKIE{'bgcolor'} && ($BgColor = $COOKIE{'bgcolor'});
$COOKIE{'background'} && ($BackGround = $COOKIE{'background'});
$COOKIE{'vertical_bar_width'} && ($VerticalBarWidth = $COOKIE{'vertical_bar_width'});
$COOKIE{'vertical_bar'} && ($VerticalBar = $COOKIE{'vertical_bar'});
$COOKIE{'vertical_image'} && ($VerticalImage = $COOKIE{'vertical_image'});
$COOKIE{'horizon_bar'} && ($HorizonBar = $COOKIE{'horizon_bar'});
$COOKIE{'horizon_image'} && ($HorizonImage = $COOKIE{'horizon_image'});
$COOKIE{'hrline'} && ($HRLine = $COOKIE{'hrline'});
($Sec, $Min, $Hour, $MDay, $Mon, $Year, $WDay, $YDay, $Isdst) = gmtime(time + 30 * 24 * 60 * 60);
$Year += 1900;
$Mon = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')[$Mon];
$WDay = ('Sunday','Monday','Tuesday ','Wednesday','Thursday','Friday','Saturday')[$WDay];
$Sec = "0$Sec" if $Sec < 10;
$Min = "0$Min" if $Min < 10;
$Hour = "0$Hour" if $Hour < 10;
$MDay = "0$MDay" if $MDay < 10;
$Value = join( "",
"$FORM{'name'}",
"\"$FORM{'mail'}",
"\"$FORM{'url'}",
"\"$MessageNo",
"\"$Text",
"\"$Link",
"\"$VLink",
"\"$ALink",
"\"$BgColor",
"\"$BackGround",
"\"$VerticalBarWidth",
"\"$VerticalBar",
"\"$VerticalImage",
"\"$HorizonBar",
"\"$HorizonImage",
"\"$HRLine" );
$Value =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
print "Set-Cookie: $CGIName=", $Value, "; expires=$WDay, $MDay-$Mon-$Year $Hour:$Min:$Sec GMT;\n";
}
#------------------------------------------------------------------------------
|