• 締切済み

ブラウザによるクッキー処理につきまして

現在、クッキーを利用してログイン~ログアウト等の処理をしていますが ブラウザによって動作が異なるようです。 動作と言いましても特殊な事では無く、ログイン後手操作でログアウトしたらそのままログアウト。 ログイン中でもクッキーの設定時間を過ぎたらログアウト可能にしたいのですが IEはバージョン6以降では特に問題も無く思ったとおりの動きを してくれますが、Firefoxでは(ver3.6.2)手操作での任意のログアウトが出来ません。 具体的には、サンプルソースの様にlogin.phpでクッキーを設定してlogout.phpで クッキーを削除していますが、Firefoxではクッキーが削除されません。 その為、ログイン後 手操作でログアウトしてもFirefoxではログアウト出来ません。 クッキー設定での時間を経過したら、ログアウト出来ます(クッキーも削除されます) ログイン側~ログアウト側 両方とも時間など、いくつかやり方を変えて見ましたが 対策が見えていません。 (ブラウザによる相違があるようでしたのでサンプルソースの様にif文で分けています。) Firefoxでは何か設定のやり方があるのでしょうか。 ご存知の方がいらっしゃいましたらご教授の程お願いします。 ■環境 OS:WindowsXP WEBサーバー:apache2.0 PHP:バージョン5.2 IE:バージョン 6/7 (クッキー許可) Firefox:バージョン 3.6.2 (クッキー許可) //-------------------------------------------- // login.php (省略サンプルソース) // クッキー設定 $userid = 'abcd'; $Agent = getenv( "HTTP_USER_AGENT" ); if (eregi("firefox", $Agent)){ // Firefox //setcookie('login_regist', $userid, time()+1); setcookie('login_regist', $userid, time()+20); }else{ // IE setcookie('login_regist', $userid, time()+20); } //-------------------------------------------- // logout.php (省略サンプルソース) // クッキー削除 $userid = 'abcd'; $Agent = getenv( "HTTP_USER_AGENT" ); if (eregi("firefox", $Agent)){ // Firefox //setcookie('login_regist', $userid, time()-2400); setcookie('login_regist', $userid, time()+0); }else{ // IE setcookie('login_regist', $userid, time() - 2400); }

  • PHP
  • 回答数2
  • ありがとう数6

みんなの回答

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

FireFox は、ブラウザに保持しているクッキー情報を確認できるので、 保持状況を確認しながら、それぞれのページにアクセスしてみては?

moo9999
質問者

お礼

ご回答ありがとうございます。 Firefox本体でのクッキー確認は私も知っています。 一応確認にも使いました。 ただ、どちらにしましてもプログラムでの削除は出来ないようです。 特に方法も無さそうですので、やはりデータベースにIPアドレスを 入れてログイン/ログアウトを管理するようにしました。 ちょっと残念ですがこの方法で対応することにします。

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.1

setcookie('login_regist', '', time() - 2400); 上記のように、空文字列でクッキーを上書きしておけば、仮にクッキーが残ったとしても中身が削除されているので問題ないのでは? クッキーの保存や削除はブラウザ任せなので、残る可能性も考慮した仕様にすべきかと。

moo9999
質問者

お礼

ご回答ありがとうございます。 > setcookie('login_regist', '', time() - 2400); 実は空文字セットでもやってみましたがだめでした。 今回は、ログイン後ログイン状態をある期間(数日間)保持させようと しているのですが、現在の状況からしますとクッキーとセッションのみでは 厳しそうですが、このような場合皆様はどうされているのでしょうか。 データベースと連携すれば、そんなに難しい事ではなさそうですが 出来ればクッキー&セッションのみで実現できればと思っていますが > クッキーの保存や削除はブラウザ任せなので、残る可能性も考慮した仕様にすべきかと。 ..の様な事を考えますと、データベースを連携させた方が良いのでしょうか。

関連するQ&A

  • クッキー削除について

    トップページからユーザIDとパスワードを入力し、次回から自動的にログインのチェックボックスにチェックを入れるとクッキー保存するという流れですが、 逆にそのとき保存した部分のクッキーを削除する方法をご教授頂けないでしょうか? ログイン後、ログアウトするとクッキーを削除したいとおもいます。 宜しくお願い致します。 ・レンタルサーバはロリポップです。 ・クッキーを保存するソースは↓ <?php $login=$_POST['login']; $email=$_POST['email']; if($login=="on"){ setcookie("email",$email,time()+(60*60*24*90)); echo mb_convert_encoding("保存しました","SJIS","EUC-JP"); } else{ echo mb_convert_encoding("クッキーを利用しません","SJIS","EUC-JP"); } ?>

    • ベストアンサー
    • PHP
  • クッキーがセットされない

    こんばんは、お世話になっております。 事あるたびに投函しているようで恐縮なのですが、調べてもその原因がわからず、皆様のアドバイスを頂戴できればと投函させて頂きます。 下記のソースは、ログイン認証時のものですが、ID、パスワードを入力時、次回より自動ログインにチェックを入れたかの分別によりクッキーを送信する内容を変えているものです。 しかしながら、チェックを入れたときは無事クッキーがセットされるのですが、チェックを入れないときはクッキーがセットされません。 お忙しい中恐縮ですが、ソースの誤りはもちろん、クッキーがセットされないポイントなど御座いましたら、アドバイスいただければ幸いに思います。宜しくお願い致します。 $addr = $_SERVER['REMOTE_ADDR']; if($check == "auto"){//自動ログインにチェックを入れた場合 setcookie("addr", $addr, time() + 60*60*24*30, "/"); setcookie("key_no", $key_no, time() + 60*60*24*30, "/"); } else{//チェックなし。ブラウザを閉じるとクッキーを無効 setcookie("login", $addr, 0, "/"); setcookie("key_no", $key_no, 0, "/"); }

    • ベストアンサー
    • PHP
  • ブラウザを終了するとCookie情報も消える。。

    知っている方いましたらご教授お願いいたします。 ■現象 safari・クロームにてCookie情報を保存したハズなのに 上記、2つのブラウザを終了⇒起動すると 保存したハズのCookie情報が消えている。 ■PHPソース $timeout = time() + (365*30) * 86400; setcookie('LOGIN_ID' ,$USER_LOGIN_ID_TEXT , $timeout,'/','lolipop.jp'); setcookie('LOGIN_PASS' ,$USER_LOGIN_PASSWORD_TEXT , $timeout,'/','lolipop.jp'); setcookie('LOGIN_CHK' ,'checked' , $timeout,'/','lolipop.jp'); ■補足 上記3つの、ログインID・パスワード・保存するかどうかのチェックボックスの3つをクッキーに保存しています。 ドメインはロリポップを利用しています。 以上、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • php cookieを利用してのログアウト処理について

    現在PHP、MYSQLを利用し会員制のサイトを構築中です。 COOKIEにてログイン情報を保持しています。 そこで、ログアウト処理に苦労しています。 ログアウトボタンを押すことにより setcookie('userid', '', time() - 36000); 上記の処理を行うことにより、cookieは削除されるのですが、他ページへ移動すると、再度cookieが生成されてしまいます。 こういった場合、どのようにすればよろしいのうでしょうか? ご教授頂ければ幸いと存じます。

    • ベストアンサー
    • PHP
  • クッキーの削除方法

    PHP5にて以下のようにクッキーを連想配列でセットしています。 setcookie("cookie[1]", "10", time()+600); setcookie("cookie[2]", "20", time()+600); setcookie("cookie[10]", "100", time()+600); この場合、一部のクッキー(例えばcookie[2]で設定したもの) だけを削除するにはどうすれば宜しいのでしょうか? 試しに以下の様に記述してみましたが、上手く削除されませんでした。 setcookie("cookie[2]"); また、全てのクッキー(全ての連想配列)を いっぺんに削除する方法もありましたら、お教えください。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • クッキーの削除

    お世話になります。 PHPにて下記の命令文でクッキーの削除を試みているのですが、削除することができません。 setcookie('クッキー名', '', time() - 1800); 何故でしょうか? 宜しくお願いいたします

    • ベストアンサー
    • PHP
  • クッキーのセット・参照・削除に関して

    こんばんは、いつもお世話になっております。 ここ何度かクッキーに関して投函させていただき、ありがたいアドバイスにより随分と理解出来るようになってきたのですが、題名にありますように、セットから参照、そして削除に関してご意見、アドバイスを頂戴したく改め投函させて頂きました。 その流れというのも、 ログイン機能を有したサイトで、ログインする際チェックを付ける事で次回より自動ログインという流れを持たせたく、ページを開いた際にクッキーを参照しているのですが、ディレクトリが違うページでログインしていると、クッキーはそのディレクトリのみ参照できるといった状況となっています。 ソースはどのファイルでも同じもの setcookie("addr", $addr, time() + 60*60*24*30); setcookie("key_no", $key_no, time() + 60*60*24*30); 次回以降自動にてログインするには当然どのページからもクッキーを参照しなければならず、そこで仕方なく、クッキーをセットする際、header関数を用いてトップページのあるディレクトリへ一度移動し、クッキーをセット、そしてまた戻るという流れになっています。 しかしながらこの場合ですと、トップ以下、複数のディレクトリがあるので、全てのディレクトリを巡回して、その都度セットしなければならず、またログアウトする場合も全てのディレクトリを巡回し、その都度削除しなければなりません。 以上のように、スキルが乏しい中で出てきたものですが、上手く説明できない・・・などと思いながらも、考え方も含め、アドバイスやご指摘など伺えたら幸いに思います。お忙しい中恐縮ですが、宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • クッキーの削除がうまくいきません

    <?php setcookie("a","おいしいクッキー"); $a=$_COOKIE["a"]; print "$a"; print "<br />"; setcookie("a","",time()-60); $b=$_COOKIE["a"]; print "$b"; ?> と書いて、クッキーの設定は出来たのですが、有効期限を過去にしても クッキーが削除されずにエラーメッセージが出ます。 エラーメッセージ Warning: Cannot modify header information - headers already sent by (output started at C:\Eclipse\workspace\PHP\cookie.php:7) in C:\Eclipse\workspace\PHP\cookie.php on line 11 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • クッキー処理

    過去に同じような質問もありましたが、いろいろ検索してこちらの過去ログを拝見しても解決できなかったので質問させてください。 訪問回数カウンターを作りたいのですがエラーが出てしまいます。 エラー:ヘッダー情報を変更することができません。 試行錯誤してみましたが、まだphp初心者なのでどこをどうしていいかわかりません。 ちなみに下がソースです。 <html> <head> <title>クッキー処理</title> </head> <body> <?php if( isset($_COOKIE['visitcount']) ){ $visit = $_COOKIE['visitcount']; } else{ $visit = 0; } $visit++; setcookie('visitcount', $visit); ?> <p><?= $visit."回目の訪問です。"; ?></p> <form> </form> </body> </html> わかる方いましたらご教授お願いします。

    • ベストアンサー
    • PHP
  • cookieのログアウト処理

    setcookieを使って、cookieを取得させ、持っている人のみが見れるサイトを作りました。 しかし、ログアウトボタンの作り方がわからなくて悪戦苦闘しています。 ログインページをPHPで作って、ログインと同時にcookieを持たせて、 中のページ($HTTP_COOKIE_VARSを読ませるためだけに拡張子はphpですが基本HTML)に引っ張っています。 その中のページからログアウト(cookieを削除)させるにはどうしたらよいのでしょうか? すみませんが、お願いします。

    • 締切済み
    • PHP

専門家に質問してみよう