• 締切済み

掲示板のcookieが消える?

自分のサイトに設置してあるBBSなんですが、cookieで名前やメアドを記憶しているはずが、ある日を境に出なくなったんです。 cookieは60日間有効にするために、以下のように書いています。 local($sec,$min,$hour,$mday,$mon,$year,$wday) = gmtime(time+60*24*60*60); @month=('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); $gmt = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT", $week[$wday],$mday,$month[$mon],$year+1900,$hour,$min,$sec); $cook="name<>$in{'name'}\,email<>$in{'email'}\,url<>$in{'url'}\,pwd<>$in{'pwd'}\,icon<>$in{'icon'}\,color<>$in{'color'}"; そして、これをprintで書き出しているのですが、なぜ消えてしまうんでしょう? 設定の仕方が間違っています?

みんなの回答

  • aton
  • ベストアンサー率47% (160/334)
回答No.2

再びatonです。 「NNのインストールしてあるディレクトリのcookies.txtを見ると入っている」という話から,cookieの発行はうまく行われていると仮定すると, - クライアントから正しいcookieを返送できていない - サーバーがクライアントから返送されたcookieを受け取れていない - サーバーは返送されたcookieを受け取れているが,その後の処理がうまくいっていない 等の理由が考えられますが,質問文のソースだけでは何とも言えません。「expiresの設定がうまくいっていないのでは」とか「cookieの置き換えがうまくいっていないのでは」とかいろいろ想像はできるんですが,あのソースでは $gmt が何なのか,cookieの名前/値/期限/ドメイン/パスがどう設定されているかすらわからないので…。 とりあえずcookieの仕様が参考URL(英語)にあるので,ご自分で確認してみてください。

参考URL:
http://home.netscape.com/newsref/std/cookie_spec.html
Spur
質問者

お礼

なるほど~(⌒ ⌒) 大変参考になるサイトを教えていただきました。 ありがとうございます。m(_"_)m 今までcookieの仕様も知らずに人の作ったCGIを頼りにやっていました。 このサイトの説明でcookieの仕様が少し分かりました。 自分のパソコンにもhttpdとperlを入れて動作試験をしていますが、同じ現象がでていますので、2番目の問題ではないと考えています。 おそらく、 - サーバーは返送されたcookieを受け取れているが,その後の処理がうまくいっていない が原因ではないかと思いますので、cookieを拾って処理するルーチンを、このサイトの仕様を基に調べて見ます。 ありがとうございました。 PS.英語は大丈夫です。(⌒ ⌒)・・・ドイツ在住4年です。

  • aton
  • ベストアンサー率47% (160/334)
回答No.1

ちょっと質問がわかりにくいのですが…。 「Cookieがサーバーから発行されなくなった」のでしょうか? それとも「ブラウザーがcookieを受け取らなくなった」のでしょうか? ブラウザーのcookie設定を変更したとか,ブラウザーをバージョンアップ/変更したとかいうことはありませんか? それによって,「ブラウザーがcookieを受け取らなくなった」だけかもしれません。 確認のために,一度ブラウザーのcookie設定を覗いてみて,「cookieを受け入れる前に警告する」というようなことが書かれているオプションを有効にしてみてください。それからもう一度ご自分のBBSにアクセスしてみれば,「Cookieがサーバーから発行されなくなった」のか「ブラウザーがcookieを受け取らなくなった」のかという問題の切り分けができると思います。

Spur
質問者

補足

回答ありがとうございます。 ちょっと説明がわかりにくかったですか?(^^ゞポリポリ せっかくのアドバイスですが、ちょっと違うような? つまりですね、ブラウザの問題ではなくて、perlの書き方なんです。 ある日までは、自分の掲示板をアクセスすると、ハンドル名、メアドなどを表示していたのです(cookieがうまく動いていた)が、ある日を境にハンドル名もメアドも表示されなくなったんです。 つまり、cookieが発行されていないと思われます。 NN4.78を使っているのですが、NNのインストールしてあるディレクトリのcookies.txtを見ると入っているんでね。 あれ?ということはcookieは発行されているけど、表示するために拾うルーチンが悪いのかな? でも、基になっているのは結構有名なフリーCGIなんですよね。 それをさんざん改造して使っています。もちろんcookieの部分は変えていません。 おかしいですね?(゜_。)

関連するQ&A