解決済み

クッキーの有効期限の記述について

  • 暇なときにでも
  • 質問No.1158822
  • 閲覧数291
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0
クッキーを扱う時に書く、expires(有効期限)の
記載についてですが・・
最初に曜日を書かなければなりませんが、
この場合、曜日を調べるのが、結構面倒です。
かといって、1年後とかの曜日を、プログラムから
計算するのも、面倒だと思います。
例えば、適当な曜日をセットしたりすると、どうなるのでしょうか。
また、有効期限の設定について、楽な方法、おすすめ
な書き方はないでしょうか。お願いします。

質問者が選んだベストアンサー

  • 回答No.1

ベストアンサー率 50% (3003/5914)

CGIモジュールを使いましょう

use CGI qw(:standard);
my $cookie = cookie(-NAME => $name, -VALUE => $value, -EXPIRES => "+1y",);
print header(-COOKIE => $cookie);
の様にして使えます。
"+3D"(3日)、"+6M"(6ヶ月)などと手軽に期間を指定できます。
詳しくは
perlDoc CGI
してみて下さい。
お礼コメント
noname#10667
ありがとうございます。
CGIモジュール使ってみます。
ただ、適当に5年後ぐらいにセットして、曜日を適当
にいれても、クッキーが有効に使えているようです
(自分のPC上で、ですが)。
この場合、クッキーはいつまで有効なのでしょうか
(恐らく曜日がちがうので、永遠に有効期限が
こないのでしょうか)。
付け足しですいません。
投稿日時 - 2005-01-09 22:47:21

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 63% (40/63)

CGIモジュールを使えば良いですが、クッキーの為だけに使うのはもったいないので、直接作成するサンプルです。

sub returnCookieDate
{
my $expire = shift | 0; # 期間を取得
my $time = time + $expire; # 期限を設定
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime ($time);
my $week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat') [$wday];
my $monw = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')[$mon];
return sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT",$week,$mday,$monw,$year+1900,$hour,$min,$sec);
}

こんな関数を書いておいて、

my $expire = 1 * 365 * 24 * 60 * 60; # 1年間の秒数
$expire = returnCookieDate($expire);

とかやります。(私の場合ですが。)
お礼コメント
noname#10667
回答ありがとうございます。
モジュールを使わないなら、やっぱり配列を
使うしかないようですね。
ちなみに、先に書きましたが、IEでは、曜日の
設定は無視されているみたいです。
投稿日時 - 2005-01-13 12:18:31
  • 回答No.2

ベストアンサー率 50% (3003/5914)

>クッキーはいつまで有効なのでしょうか
曜日がでたらめだった時の、有効期限について、
確かなことは言えない(ブラウザによるのかもしれないし)ですが、
私の考えですが、
日付を内部形式(例えばエポック秒:ある基準の日付からの経過秒)で表していると考えられると思います。
その場合、年月日時分秒の情報があれば充分であり、多分、曜日データはそういう内部形式への変換時には使用されない(無視される)のではないかと思います。
チェックの厳しいプログラムがあって、
日付と曜日の対応が正しくないとプログラムが気付いたとして、日付にどう修正をいれるかと考えると、
私なら、どう修正をするのが正しいのかわからないです。一般的にも、その場合の正しい修正というのは、考えにくいと思います。なので、やはり、無視することになろうかと思います。
もし、本当に、その入力が正しくない!
と(プログラムが)言いたいなら、クッキーを書き込む要求自体を拒否するのが順当だと思います。
けれども、既に述べたように、曜日情報はとりたてて必要な情報ではないので、書き込みの失敗・拒否とするよりかは、目くじら立てないで、曜日の情報は無視して処理するのがやはり順当だと思います。

以上は、私の推測なので、あまり意味はありませんが、
まあ、曜日が間違えていても使えるならそれでいいかもしれないけど、最悪拒否されてたり、処理されないような場合もあるかもしれないし、積極的にでたらめでもいいと思うよりかは、
なるべくちゃんと書きましょう。
大抵のプログラム言語でGMTとかUTC表現の時刻フォーマットにできると思うので、なるべくそういうものを使いましょう。
くらいのことしか言えません。
長々とありきたりのことしか書けなくてすみません。
お礼コメント
noname#10667
回答ありがとうございます。
自分で確認してみたところ、IEでは、曜日は確かに
無視されているようでした(曜日をいろいろ変えても
設定日時には、クッキーが削除されました)。
投稿日時 - 2005-01-13 12:15:05
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ