クライアントにクッキーをセットするためのHTTPヘッダー文字列を返します。クッキー値に日本語が入っている場合には、URLエンコードします。
■ サブルーチン名
SetCookie
■ 引数
- クッキー名
- クッキー値
- 有効期限の日時(YYYYMMDDhhmmss)
- ドメイン名
- パス
■ 戻値
- HTTPヘッダーに使う「Set-Cookie」の文字列
■ 使い方
このサブルーチンを入れるPerlスクリプトのはじめのほうに、必ず、
use Time::Local; を記載してください。
$CookieHeaderString = &SetCookie(クッキー名, クッキー値, 有効期限までの日数, ドメイン名, パス);
クッキー名、クッキー値以外は必須ではありません。
【 例 1 】
$CookieName = 'hoge';
$CookieValue = 'hogehoge';
$ExpireDate = '201003051300';
$Domain = 'www.futomi.com';
$Path = '/cgi-bin/';
$CookieHeaderString = &SetCookie($CookieName, $CookieValue, $ExpireDate, $Domain, $Path);戻り値 $CookieHeaderString には、以下の文字列が入ります。
Set-Cookie: hoge=hogehoge; expires=Fri, 05-Mar-2010 04:00:00 GMT; domain=www.futomi.com; path=/cgi-bin/; 【 例 2 】
$CookieName = 'hoge';
$CookieValue = 'hogehoge';
$ExpireDate = '201003051300';
$CookieHeaderString = &SetCookie($CookieName, $CookieValue, $ExpireDate);とした場合には、戻り値 $CookieHeaderString には、以下の文字列が入ります。
Set-Cookie: hoge=hogehoge; expires=Fri, 05-Mar-2010 04:00:00 GMT; 【 例 3 】
$CookieName = 'hoge';
$CookieValue = 'hogehoge';
$CookieHeaderString = &SetCookie($CookieName, $CookieValue, $ExpireDate);とした場合には、戻り値 $CookieHeaderString には、以下の文字列が入ります。
Set-Cookie: hoge=hogehoge;
■ サブルーチン
sub SetCookie {
my($CookieName, $CookieValue, $ExpireDate, $Domain, $Path) = @_;
# URLエンコード
$CookieValue =~ s/([^\w\=\& ])/'%' . unpack("H2", $1)/eg;
$CookieValue =~ tr/ /+/;
my($CookieHeaderString);
$CookieHeaderString .= "Set-Cookie: $CookieName=$CookieValue\;";
if($ExpireDate) {
my(@MonthString) = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
my(@WeekString) = ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
my($ExYear) = substr($ExpireDate, 0, 4); $ExYear -= 1900;
my($ExMonth) = substr($ExpireDate, 4, 2); $ExMonth =~ s/^0//; $ExMonth --;
my($ExDay) = substr($ExpireDate, 6, 2); $ExDay =~ s/^0//;
my($ExHour) = substr($ExpireDate, 8, 2); $ExHour =~ s/^0//;
my($ExMin) = substr($ExpireDate, 10, 2); $ExMin =~ s/^0//;
my($ExSec) = substr($ExpireDate, 12, 2); $ExSec =~ s/^0//;
my($time) = timelocal($ExSec, $ExMin, $ExHour, $ExDay, $ExMonth, $ExYear);
my($sec, $min, $hour, $monthday, $month, $year, $weekday) = gmtime($time);
$year += 1900;
$month = $MonthString[$month];
if($monthday < 10) {$monthday = '0'.$monthday;}
if($sec < 10) {$sec = '0'.$sec;}
if($min < 10) {$min = '0'.$min;}
if($hour < 10) {$hour = '0'.$hour;}
my($GmtString) = "$WeekString[$weekday], $monthday-$month-$year $hour:$min:$sec GMT";
$CookieHeaderString .= " expires=$GmtString\;";
}
if($Domain) {
$CookieHeaderString .= " domain=$Domain;";
}
if($Path) {
$CookieHeaderString .= " path=$Path;";
}
return $CookieHeaderString;
}
|