カレッヂ |
質問者 BlueLaboratory
投稿日 3/13(火) 19:22:28
下記の用に取得したらいつも &BleuLaboratory=10*1&BleuLaboratory=10*1 と出ます。 ちなみにOSはWin2000です。 パソコンに入ってるクッキーのファイル全て消してもまだ、表示されるんです… なぜ? $b_cookie = $ENV{'HTTP_COOKIE'}; |
質問者 BlueLaboratory
[削除]
投稿日 3/13(火) 19:41:43
それと クッキーの削除のスクリプトもうまくいかないのですが、下記は間違ってますかね? @youbi = ("Sun","Mon","Tue","Wed","Thr","Fri","Sat"); @mons = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); ($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime(time-1); $out_cookie = sprintf("%s, %02d\-%s\-%04d %02d:%02d:%02d GMT",$youbi[$wday],$day,$mons[$mon],$year+1900,$hour,$min,$sec); print "Content-Type: text/html\n"; print "Set-Cookie: name=dami; expires=$out_cookie\n\n"; |
回答者 まさ
[削除]
投稿日 3/13(火) 21:33:58
Windows2000は入るユーザーによってCookieが格納さてれいるフォルダーが違いますが、 ちゃんと自分の場所のCookieを削除していますか? |
質問者 BlueLaboratory
[削除]
投稿日 3/13(火) 22:53:47
原因はクッキーのフォルダじゃなくて、Content.IE5とかいうフォルダに入ってました(^_^;) 今クッキーを削除するスクリプトをCGI(Perl)で作ってるんですが、うまく動作しないんです… なんでだろう…(T_T) 下記がその問題のスクリプトです。 @youbi = ("Sun","Mon","Tue","Wed","Thr","Fri","Sat"); @mons = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); ($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime(time-1);$year += 1900; $out_cookie = "@youbi[$wday], $day-@mons[$mon]-$year $hour:$min:$sec GMT"; print "Content-Type: text/html\n"; print "Set-Cookie: name=dami; expires=$out_cookie\n\n"; |
回答者 まさ
[削除]
投稿日 3/14(水) 19:56:55
>(略) >print "Content-Type: text/html\n"; このヘッダーがあってはCookieはセットされません。 これでは画面に出力されてしまいます。 これを取りましょう。 |
質問者 BlueLaboratory
[削除]
投稿日 3/14(水) 20:00:37
この後にprintでHTMLを出してるのですが、 print "Content-Type: text/html\n"; を取ってしまったらそれはもちろん表示されませんよね? その場合どうしたら良いのでしょうか? print "Content-Type: text/html\n"; print "Set-Cookie: name=dami; expires=$out_cookie\n\n"; ではなくて print "Set-Cookie: name=dami; expires=$out_cookie\n"; print "Content-Type: text/html\n\n"; とすれば良いのでしょうか? また、ブラウザを閉じる前に消去したい場合は現在のようにtime-1で取得した日時をexpriesで指定したらいいのでしょうか? |
回答者 まさ
[削除]
投稿日 3/14(水) 20:07:21
>その場合どうしたら良いのでしょうか? >print "Content-Type: text/html\n"; >print "Set-Cookie: name=dami; expires=$out_cookie\n\n"; >ではなくて >print "Set-Cookie: name=dami; expires=$out_cookie\n"; >print "Content-Type: text/html\n\n"; >とすれば良いのでしょうか? そうです。 とにかくCookieはヘッダーの前にセットしなければいけません。 >また、ブラウザを閉じる前に消去したい場合は現在のようにtime-1で取得した日時を >expriesで指定したらいいのでしょうか? ブラウザーを閉じる前にCookieを消去することはできません。 ブラウザーを閉じる時なら以下で出来ます。 print "Set-Cookie: name=dami;\n"; expiresを取れば、そのCookieはブラウザーが開いている時だけ有効です。 |
質問者 BlueLaboratory
[削除]
投稿日 3/14(水) 23:13:40
前に持って来ても着せないのですが… 本もクッキーの方がContent-Type: text/htmlより後になってる… Content-Type: text/htmlの事をヘッダーと言うのでしょうか? \n\nまでの事をヘッダーと言うのだと思ってました。 |
回答者 まさ
[削除]
投稿日 3/15(木) 08:56:09
そうです。\n\nまでがヘッダーです。 >print "Content-Type: text/html\n"; >print "Set-Cookie: name=dami; expires=$out_cookie\n\n"; これよく見ると最初は\nとひとつしかないのでヘッダーは終了していませんね。次の行に \n\nとありますね。これはSet-Cookieの終わりとヘッダーの終わりを表してますね。 しかしこんなややこしい書き方をしてはいけません。間違いではないですが、ややこしい書き方 はバグの元です。わたしとしては print "Set-Cookie: name=dami; expires=$out_cookie\n"; print "Content-Type: text/html\n\n"; こちらの書き方の方が良いと思います。しかしこれは個人の好みもあって、一概にどちらがいいと は言いにくいですが。 しかしいづれにしてもこれでCookieは設定されますけどね。他にはどこも問題はないですからね。 Cookieを受け付けないと言う風に設定しているわけではないですよね。 |
質問者 BlueLaboratory
[削除]
投稿日 3/15(木) 11:35:22
登録は出来るのですが、削除ができないんです(T_T) |
回答者 しあわせのツボ
[削除]
投稿日 3/15(木) 12:17:25
サーバから直接「削除」する方法はないと思います。 同じ名前で中身のないクッキーを発行することで上書きし、見かけ上消すのが一般的です。 その空クッキーのexpireを記述しないか「今」にしておけば、ブラウザを終了させた時にその空クッキーが破棄されます。 |
質問者 BlueLaboratory
[削除]
投稿日 3/15(木) 14:29:48
全て理解し、無事解決いたしました。 ほんとうにありがとうございましたm(__)m 問題はしあわせのツボさんのおっしゃる通りnameの違いが原因でした。 |
このページは終了したので返信(回答)は書きこめません
Web裏技 |