クライアントにクッキーをセットするためのHTTPヘッダー文字列を返します。クッキー値に日本語が入っている場合には、URLエンコードします。

■ サブルーチン名

SetCookie

■ 引数

  1. クッキー名
  2. クッキー値
  3. 有効期限の日時(YYYYMMDDhhmmss)
  4. ドメイン名
  5. パス

■ 戻値

  1. 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;
}

戻る

会社案内 | 特定商取引法に基づく表示 | プライバシーポリシー | 当サイトへのリンクについて | お問い合わせ