• ベストアンサー

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

hikominの回答

  • hikomin
  • ベストアンサー率63% (40/63)
回答No.3

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では、曜日の 設定は無視されているみたいです。

関連するQ&A

  • クッキーの有効期限取得(C#)

    VC#(ASP.NET)で、クッキーを作成しているのですが、 クッキーの有効期限の取得方法をご存知の方、お教えください。 Request.Cookies["クッキー名"].Expiresで有効期限を取得しようとしたのですが、有効期限を取得することができませんでした。 最低でも、有効期限あり、有効期限なしの情報だけでも取得したいのですが。 そもそも有効期限は取得することができないのでしょうか?

  • javascriptでクッキーを書き出しているんですが、確実にクッキー

    javascriptでクッキーを書き出しているんですが、確実にクッキーの値を上書きするにはどうすればいいのでしょうか? 通常では同じkeyがあれば上書きされるはずですよね?それなのに、クッキーの内容を確認すると同じkeyで値が違うものができていて判定ができない状態です。 上書きされないという問題の原因が自分ではわかりません。何か原因があるとすれば解決方法などありますでしょうか? どなたか是非ご教示の程お願いします。 /*クッキー作成の関数*/ function SetCookie(Value){ Expires = new Date(); //日付オブジェクト作成 Expires.setTime(Expires.getTime()+(1000*60*60*24*365)); //デフォルト1年有効 Expires = "expires=" + Expires.toGMTString(); //クッキーの有効期限を作成 SetData = "Area=" + escape(Value) + ";"; //クッキー名=値 を作成 document.cookie = SetData + Expires + ";domain=123456789;path=/;"; //クッキー発行 }

  • 期限内の場合はクッキーを上書きしないようにする方法

    a-site.comとb-site.comとc-site.comの全ページに下のようなJavascriptを埋め込んでクッキーを残そうとしています。 <script type="text/javascript"> <!-- var name = "iriguchi"; // クッキーの名前 var value = "a-site"; // クッキーの値 (サイトごとに変える) var period = 30; // 有効期限(分) // 有効期限の作成 var nowtime = new Date().getTime(); var clear_time = new Date(nowtime + (60 * 1000 * period)); var expires = clear_time.toGMTString(); // クッキーの発行(書き込み) document.cookie = name + "=" + escape(value) + "; expires=" + expires; // --> </script> この場合、a-site.comにアクセスした人がb-site.comにアクセスした場合、a-site.comで書き込まれたクッキーが期限内であっても期限切れでも、b-site.comにアクセスした時点でクッキーの中身は「b-site」に書き換えられ、期限も更新されてしまいます。 これを、クッキーの期限内であればどのサイトを回ろうと最初に書き込まれたクッキーの内容が保持され、期限が切れた時点で新たな内容に書き換えられるようにしたいのですが、それには上のソースに何か書き加える必要がありますよね? 書き方がわからないので文法のむちゃくちゃな自己流で書きますが if (a-site.comで書かれたcookieが期限内){クッキーは前のまま継続} else if (a-site.comで書かれたcookieが期限切れ){新期限 =expires、iriguchi = b-site} といったようにしたいのですが、現在のJavascriptのどこにどういう文を書き加えたらいいでしょうか?

  • セッション(session)ってクッキー(cookie)とどう違うの?

    セッションはクッキーが有効になってないと使えないと本で覚えました。そしてセッションの仕様として「そのウィンドウでのみ有効。閉じたら破棄される」ともありました。しかしこれではexpires(有効期限)を設定しないクッキーと違いがないように思うのですが・・・。セッションとクッキーの相違点はどのようなものなのでしょうか?またそれをどのように生かす方法があるのでしょうか?

    • 締切済み
    • PHP
  • CGI:Cookie保存期限の指定について

    CGI:Cookieモジュールを使用して、クッキーの設定を行っています。 そこで、保存期限の指定方法について教えて頂きたいのです。 日にち単位、年単位の保存方法はなんとかわかったのですが、 (-expires=>'+7d' -expires=>'+1y' で正しいですよね?) 時間単位での指定方法がわからないのです。 例えば、『毎時0分0秒にクッキーを消す』と言った指定はできるのでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • クッキーの保存時間

    クッキー保存のジャバスクリプトを拾ってきました。 いろいろあって、クッキーの保存の期間を次の24:00(夜の12時)までにしたいのです。 今の状態だと、おそらく24時間保存されると思います。 今のプログラム↓ <script type="text/javascript"> <!-- //ページ読み込み時に発生する。(bodyのonLoadイベントで呼び出し) function init() { //クッキー取得処理を呼び出し、戻り値をcoocに代入 var cooc = getCookie(); //戻り値がOKの場合はクッキーが存在するのでb.htmlに飛ばす if (cooc == "OK") { location.href="b.htm"; } } //クッキー取得(取得できればOK、できなければNGを返す) function getCookie(){ //当日日付取得 var today = new Date().getTime(); //クッキー取得 var doc = document.cookie+";".indexOf("test="); //クッキーが取得できなければindexOfで-1が返されるのでif文で判別 if(doc != -1){ return("OK"); } else { //取得できなければクッキーを食べさせる。(expires=有効期限) document.cookie = "test=1;expires="+new Date(today + (60 * 60 * 24 * 1000 * 1)); return("NG"); } return(""); } //--> </script> ↑↑ までです。 expires="+new Date(today + (60 * 60 * 24 * 1000 * 1)); の部分が保存期間だと思います。 これだとおそらく24時間保存されます。 ここを次の24:00(夜の12時)までも保存期限にしたいのです。 わかりにくいとは思いますが、わかりやすい回答をお願いいたします。 検索するにも方法がわからなかったので質問させていただいております。

  • クッキーの基礎的なことについて

    print "Content-type: text/html\n\n"; #クッキーがないときの動作。 #クッキーがない場合クッキーを期限1日で発行する。 if(!$ENV{'HTTP_COOKIE'}){ #クッキーが存在する場合の動作 print "クッキーないない<br>\n"; #1時間先のグリニッジ標準時を取得し、weeksとmonthsを定義 ($gmSec, $gmMin, $gmHour, $gmMDay, $gmMon, $gmYear, $gmWDay, $gmYDay, $gmIsDst) = gmtime(time + (3600 * 24)); $gmYear += 1900; @weeks = ('Sun', 'Mon', 'Tue', 'Web', 'Thu', 'Fri', 'Sat'); @months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); #クッキーの有効期限をその日の1日後までにする $limitTime = sprintf("%s\n, %02d-%s-%04d %02d:%02d:%02d GMT",$weeks[$gmWDay], $gmMDay, $months[$gmMon], $gmYear, $gmHour, $gmMin, $gmSec); #クッキー発行 print "Set-Cookie: myBool=1; expires=$limitTime\n"; print "\n"; } else { #クッキーがあった場合の動作。クッキーありと表示するだけ。 print "クッキーあり。"; } クッキーの発行を見ると print "Set-Cookie: なんたらかんたら"; らしいのですが、printでこう書くだけでクッキーが発行できたことになるのですか? 実行しても、ただ単に例えば Set-Cookie: myBool=1; expires=Mon , 08-Aug-2005 12:11:43 GMT というようになるだけです。 初心者でまだ1度もクッキー作成成功してないのですが何がいけないのでしょうか。

    • ベストアンサー
    • Perl
  • Cookieの期限設定の書式について

    現在ASPでCookieを使用しております。以下のように、 Response.Cookies("UserID")=UserID Response.Cookies("UserID").Domain="aaaa.co.jp" Response.Cookies("UserID").Expires= DateAdd("n",5, Now) Response.Cookies("UserID").Path="/" Response.Cookies("ItemID")=ItemID Response.Cookies("ItemID").Domain="aaaa.co.jp" Response.Cookies("ItemID").Expires= DateAdd("n",5, Now) Response.Cookies("ItemID").Path="/" の様に期限の設定をしているのですが、上手く期限が設定できていないのか、 期限時刻を過ぎてもCookieが残ってしまいます。 Cookieの期限の書式は、 [書式]Sun, 21-Feb-2002 02:22:54 GMT と決められている様ですが、上記のASPの場合 2005/07/10 22:15:42 という値が入っているから期限が上手く設定できていないのでしょうか? 分刻みで時間を足したいのですが、上記のCookieの書式のように、曜日から きちんと同じ書式で無いと期限は上手く設定されないのでしょうか?

  • Firefoxのクッキーで

    Firefoxのクッキーで一つのサイトごとにもいろいろなクッキーがあると思います。 例えばフォームの保存用のクッキーや閲覧の履歴などのクッキーです。 一つのサイトのクッキーを受け付けない設定をしてしまうと 当然これらすべてが無効になってしまいます。 なのでサイトごとの拒否ではなく、そのドメインの中の 特定のクッキーだけを受け付けなくしたいんです。 そういうアドオンや方法があったら教えてください。 毎回オプションから消すのは少し面倒です・・・。

  • クッキー取得処理のジャバスクリプトを拾ってきたんですが、壊れているのか効きません。

    これなんですが、firefoxIE6とどれも効いてくれないのですが、なぜなんでしょうか? 僕の設定がおかしいのでしょうか。 head内に設置しているんですが、どうすれば効いてくれるようになるんでしょうか? <script type="text/javascript"> <!-- //ページ読み込み時に発生する。(bodyのonLoadイベントで呼び出し) function init() { //クッキー取得処理を呼び出し、戻り値をcoocに代入 var cooc = getCookie(); //戻り値がOKの場合はクッキーが存在するのでb.htmlに飛ばす if (cooc == "OK") { location.href="b.htm"; } } //クッキー取得(取得できればOK、できなければNGを返す) function getCookie(){ //当日日付取得 var today = new Date().getTime(); //クッキー取得 var doc = document.cookie+";".indexOf("test="); //クッキーが取得できなければindexOfで-1が返されるのでif文で判別 if(doc != -1){ return("OK"); } else { //取得できなければクッキーを食べさせる。(expires=有効期限) document.cookie = "test=1;expires="+new Date(today + (60 * 60 * 24 * 1000 * 1)); return("NG"); } return(""); } //--> </script>