• ベストアンサー

クッキーの保存場所

今、自分でCGIで掲示板にクッキー機能をつけているところなのですが、保存されたクッキーファイルのありかがよく分かりません。 Windows XP → 「\Documents and Settings\ユーザ名\Cookies\」 とあるページに書いてあったので、そのフォルダをみてみたのですが、他のクッキーファイル(ユーザ名@aabbcc.txt といったファイル)はあるのですが、自分で作った掲示板のクッキーファイルらしいものがありません。でも、掲示板のクッキー機能は働いているようです。 一応クッキー保存ルーチンを以下に示します。 sub set_cookie { ($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg) = gmtime(time + 60*24*60*60); $yearg += 1900; $date_gmt = "$youbi, $mdayg\-$mong\-$yearg $hourg:$ming:$secg GMT"; $cookies="name\:$FORM{'name'}\,email\:$FORM{'email'},url\:$FORM{'url'},pass\:$FORM{'pass'}"; print "Set-Cookie: SAMPLE=$cookies; expires=$date_gmt\n"; }

  • arcsin
  • お礼率46% (194/417)
  • CGI
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • feininger
  • ベストアンサー率41% (74/180)
回答No.1

expiresの指定ミスという可能性が高いので、とりあえず固定値で試してみるとよいかと。 ($youbiと$mongがアヤシイ) expires=Thu, 1-Jan-2030 00:00:00 GMT

arcsin
質問者

お礼

ありがとうございます^^v たしかにご指摘いただいたように、$youbi $mongの値をちゃんと設定していなかったですね^^; ちゃんと代入してやった結果、ちゃんと生成されました。またよろしくおねがいします。

関連するQ&A

  • Cookieの有効期限について

    Cookieの有効期限を半年間にしようと思い、 プログラムを覗いてみたところ、以下のような記述がありました。 どこをいじれば半年間に伸ばすことができるのか教えていただけますか? どうかよろしくお願いいたします。 sub set_cookie { ($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg) = gmtime(time + 30*24*60*60); $yearg += 1900; if ($secg < 10) { $secg = "0$secg"; } if ($ming < 10) { $ming = "0$ming"; } if ($hourg < 10) { $hourg = "0$hourg"; } if ($mdayg < 10) { $mdayg = "0$mdayg"; } $month = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')[$mong]; $youbi = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')[$wdayg]; $date_gmt = "$youbi, $mdayg\-$month\-$yearg $hourg:$ming:$secg GMT"; $cook="name\:$FORM{'cntr'}\,email\:$FORM{'email'},pswd\:$FORM{'pswd'}"; print "Set-Cookie: TORBBS=$cook; expires=$date_gmt\n"; }

    • ベストアンサー
    • Perl
  • PHPでのクッキー

    PHPでクッキーを使い、下記のような入力フォームを作りました。 form.phpで入力→form2.phpで正常出力出来るのですが、 直接form2.phpへ飛ぶと、クッキーの値がなくなってしまいます。 setcokkieが、何の値もないのを上書きしていることは理解できるのですが、これを上書きせず回避?する方法はありますでしょうか? よろしくお願いします。 【form.php】 <?PHP parse_str($_COOKIE["city"]); parse_str($_COOKIE["city_name"]); ?> <html> <form method="post" action="form2.php"> <?PHP echo "名前1<input type=text name=name1 maxlength=16 size=12 value=$set_name1> <BR>ID<input type=text name=p1 maxlength=8 size=6 value=$set1><BR><BR>"; echo "名前2<input type=text name=name2 maxlength=16 size=12 value=$set_name2> <BR>ID<input type=text name=p2 maxlength=8 size=6 value=$set2>"; ?> <input type="submit" value="実行"> </form> </html> 【form2.php】 <?php $city1 = $_POST["p1"]; $city2 = $_POST["p2"]; $city_name1 = $_POST["name1"]; $city_name2 = $_POST["name2"]; setcookie ("city", "set1=$city1&set2=$city2",time()+3600*24*90); setcookie ("city_name", "set_name1=$city_name1&set_name2=$city_name2",time()+3600*24*90); parse_str($_COOKIE["city"]); parse_str($_COOKIE["city_name"]); echo $set_name1; echo $set1; echo $set_name2; echo $set2; ?>

    • ベストアンサー
    • PHP
  • クッキー認証>クッキー削除ができない!!

    今回は、クッキー認証画面を作成している際、 エラーが出てしまって先に進めず投稿しました。 下記にプログラム記載 ----H_01.html---------------------------------- <html> <head> <title>クッキー認証</title> </head> <body> <center> <form method="POST" action="H_02.php"> 名前<input type="text" name="name"> パスワード<input type="Password" name="pass"> cookieを記録する<input type="checkbox" name="chk"> <input type="submit" value="送信"> <input type="reset" value="リセット"> </form> </center> </body> </html> ------------------------------------------------ -----H_02.php---------------------------------- <?php $name = $_COOKIE['name']; $pass = $_COOKIE['pass']; $cnt = $_COOKIE['chk']; if ($cnt == True) { $lim = time()+7*24*60*60; //有効期限1週間 setcookie('name',$name,$lim); setcookie('pass',$pass,$lim); } else { setcookie('name'); setcookie('pass'); } ?> ------------------------------------------------ else文内の、setcookie二行にエラーが出ます。 htmlでチェックボックスにチェックが施されていない場合、クッキーを削除。 調べてみたのですが、どうしたらよいのかわからず 投稿しました。よろしくお願いします。

    • ベストアンサー
    • PHP
  • クッキーが保存されずに困っています

    どなたか、詳しい方がおりましたらアドバイスをお願い いたします。私はプログラムを仕事としている者では ありませんが、独学でPHPを勉強しております。 クッキーが保存されなくて困っています。 以下の部分です。 クッキーの有効期間は設定していませんが、ブラウザを 閉じずにテストしていての情況です。 ---------------------------------------------------- ファイル名:rogin.php <?php setcookie("userck","ckdata=100"); print $_COOKIE[userck]; ?> <html> <body> <br><br><br> <center> <table border="1"> <form method="post" action="<?=*********"> <tr> <td> Email: </td> <td><input type="text" name="data1" size="30"> </td> </tr> <tr> <td> pass: </td> <td><input type="text" name="data2" size="30"> </td> <tr> <td colspan="2" align="center"> <input type="submit" name="sousin" value="送信"> </td> </tr> </form> </center> </body> </html> ---------------------------------------------------- どうしてクッキーが保存されないのか自分なりにいろいろと 調べたり、テストをしてみたりしました。 テストの内容 test1.php <?php setcookie("userck","ckdata=100"); ?> test2.php <?php print $_COOKIE[userck]; ?> 上の2つのファイルを作成して、test2.phpで出力してくるか どうかを試してみますと、問題なく「data=10」が出力されて きます。(保存されているかどうかだけを調べたいので、 parse_strは省略しています。) ところが、問題のrogin.phpでクッキーを保存して別のファイル で$_COOKIE[userck]を取得しようとしてもどうやら保存されて いないようです。 rogin.phpの内部に記載した、print $_COOKIE[userck];では ckdata=100は出力してきます。 それではと思い、test1.phpでセットしたクッキーはrogin.phpで 取得できるのかどうかをテストしてみますと、無事に取得できます。 setcookie()の前にはHTMLの出力はありません。 クッキー名にアンダーバーも使っていません。 何か、php.iniに関係するのかと思い、一応iniファイルに output_buffering = On を書き足したりもしました。 クッキーが保存されない原因で、考えられることはどんなこと なのかが知りたいです。 どなたか、お分かりになる方アドバイスをお願いできないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • クッキーについて

    以下はperlにcookieが含まれている例です。(長くてすみません)結局、フォームに書き込んだ項目がクッキーによってすぐ表示されるということです。この場合、別のファイルで項目を取得するにはどうすればよいでしょうか。 #! c:/perl/bin/perl require "jcode.pl"; #============================ ユーザー設定 ==== $CHARSET = 'Shift_JIS'; # 文字コード $DATAFILE = './board.dat'; # 記事ファイル 中略 $COOKIE_PREFIX = 'simplebbs'; # クッキープリフィクス $COOKIE_LIFE = 10; # クッキー期限(日) #======================== メインプログラム ==== loadFormdata(); loadCookie(); # 記事データの読み込み open(FILE, "<$DATAFILE") or printErrorPage("記事ファイルが開けません。"); eval{ flock(FILE, 1) }; @DATA = <FILE>; close(FILE); if(exists $FORM{'mode'}) { if($FORM{'mode'} eq 'write') { writeArticle(); # 書き込みモード } 中略 # 削除モード } # 記事データの書き込み 中略 printPage(); exit; #========================== 記事ページ出力 ==== sub printPage { my $begin = $FORM{'page'} * $PAGEVIEW; my $end = $begin + $PAGEVIEW; if($end > @DATA) { $end = @DATA; } printHttpHeader(); print <<END; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head><title>けいじばん</title></head> <body> <h1>掲示板</h1> <form action="$ENV{'SCRIPT_NAME'}" method="POST"> 名前:<input type="text" name="author" size="40" value="$COOKIE{'author'}"><br> 電子メール:<input type="text" name="email" size="40" value="$COOKIE{'email'}"><br> 題名:<input type="text" name="title" size="60"><br> 内容:<textarea cols="60" rows="5" name="text"></textarea><br> <input type="hidden" name="mode" value="write"> <input type="submit" value="書き込み"> <input type="reset" value="リセット"> </form> <hr> <form action="$ENV{'SCRIPT_NAME'}" method="POST"> END # 記事の出力 my ($i, $nextpage, $nextlink); for($i = $begin ; $i < $end ; ++$i) { 中略 } # 次ページへのリンク 中略 #========================== 記事を書き込む ==== sub writeArticle { my @wdy_str = ('日', '月', '火', '水', '木', '金', '土'); my ($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time); my $date = sprintf("%4d年%02d月%02d日(%s) %02d:%02d", $year + 1900, ++$mon, $mday, $wdy_str[$wday], $hour, $min); unshift @DATA, 中略 $COOKIE{'author'} = $FORM{'author'}; $COOKIE{'email'} = $FORM{'email'}; } #========================== 記事を削除する ==== 中略 #======================== HTTPヘッダー出力 ==== sub printHttpHeader { # グリニッジ標準時の文字列 my @mon_str = ( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); my @wdy_str = ( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); my ($sec, $min, $hour, $mday, $mon, $year, $wday) = gmtime(time + ($COOKIE_LIFE * 24 * 60 * 60)); my $date = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT", $wdy_str[$wday], $mday, $mon_str[$mon], $year + 1900, $hour, $min, $sec); # ヘッダーの出力 my ($name, $value); print "Content-type: text/html; charset=$CHARSET\n"; foreach $name (keys %COOKIE) { $value = $COOKIE{$name}; $name = "${COOKIE_PREFIX}_$name"; $value =~ s/(\W)/sprintf("%%%02X", ord($1))/eg; print "Set-Cookie: $name=$value; expires=$date\n"; } print "\n"; } #======================== エラーページ出力 ==== 中略 #================== クッキーデータ取り込み ==== sub loadCookie { my $pair; foreach $pair (split(/;\s*/, $ENV{'HTTP_COOKIE'})) { my ($name, $value) = split(/=/, $pair); if(not $name =~ /${COOKIE_PREFIX}_(.+)/) { next; } $name = $1; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg; $COOKIE{$name} = $value; } } #================== フォームデータ取り込み ==== sub loadFormdata { my ($query, $pair); if($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); 中略

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

    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
  • クッキー情報の保存日数

    function setCookie(keyname, val){ var tmp = keyname + "=" + escape(val) + ";"; var gmt = new Date(); gmt.setTime(gmt.getTime() + 9*60*60*1000 + 24*60*60*1000*365); tmp += "expires=" + gmt.toGMTString(); document.cookie = tmp; 上記設定にてクッキーが保存されていますが、1週間もしない内に保存された情報が消えてしまいます。1年以上保存しておきたい場合はどのように設定すればいいのでしょうか?

  • クッキーの保存と確認をしようとしたら

    すみません質問です。 クッキーの保存と確認をするスクリプトを組んだのですが、 保存ボタンを押したらscriptエラーが出てしまいます。 エラーの内容は-------------------------- ライン:1 文字:1 オブジェクトを指定してください。 ---------------------------------------- というものです。 以下のソースのどこに問題があるのでしょうか。 スクリプトが間違っているのなら直そうと思うのですが、 <script>~</script>を消去してもエラーになってしまいます。 お暇な人、教えてください。お願いします。 <html> <head> <title>COOKIE TEST</title> <script language=javascript> function set_c(key){ document.cookie = "dest=" + key ; } function get_c(c_Name){ c_Name += "="; theCookie = document.cookie + ";"; start = theCookie.indexOf(c_Name); if (start != -1){ end = theCookie.indexOf(,";",start); return unescape(theCookie.substring(start + c_Name.length, end)); } return false; } function conf_c(){ get_c(dest); alert(document.cookie.sousin); } function conf_c2(){ alert(document.cookie); } </script> </head> <body> <a href="javascript:set_c('http://www.yahoo.co.jp');">クッキー保存</a><br><br> <a href="javascript:conf_c();">クッキー確認</a><br><br> <a href="javascript:conf_c2();">クッキー確認2</a> </body> </html>

  • cgiでのユーザーIDとパスワードの認証

    パスワードの確認しかないcgiにユーザーIDの認証も追加したいのですが、どのように変更すれば良いのかわかりません。皆さんのアドバイスよろしくお願いします。 ※ユーザーID $text = 'test' # パスワードの確認 if ($formdata{'pass'} eq $password or $cookies{'pass'} eq $password) { $access = $upload = $delete = 1; $cookie = "Set-cookie: pass=$password\n"; } elsif ($formdata{'pass'} or $cookies{'pass'}) { $form_log .= "パスワードが正しくありません。<br>"; }

  • Cookieが保存できない。

    CGIをつかってクッキーを保存しようと試みています。 以下のように記述しておりますがなぜかクッキーファイルが生成されません。 print "Content-type: text/html\n"; print "Set-Cookie: NAME=test\n"; print "\n"; print "テスト"; 何か問題がるのでしょうか?もちろんブラウザ上ではクッキーは有効にしていますし、ほかの他クッキーファイルは存在します。 ブラウザはIE6.0です どなたかご教授お願いします。

    • ベストアンサー
    • CGI

専門家に質問してみよう