- ベストアンサー
セッションの削除方法とは?
- セッションの削除方法について説明します。
- セッションの削除手順や注意点について解説します。
- セッションを完全に削除する方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一つ質問なんですが、 setcookie("bar",session_id(), time()+3600); 第一引数が、cookieの名前で 第二引数が、その名前に格納する文字列 第三引数が、その有効期限 になりますが 第一引数をbarとされているのはなぜでしょうか。 例示されているスクリプト中には、session_name関数で引数を設定しているようにも見えません。 ソレにも関わらず、削除したいcookieの名前を、session_name関数で引こうとしているように見えます。 >なぜ一つ階層を下げるとうまくいかないのか不思議です。 もしかして、別の場所で、 session_name('bar'); とか記載されている箇所ありませんか? 質問者さんが実装したい内容が何なのかがわかりませんが、 例示されたスクリプトだけで判断すると、 <?php session_name('bar'); session_start(); setcookie(session_name(), session_id(), time()+3600); ?> と、session_nameをbarと指定してやる必要があるのではないでしょうか。 また、 <?php session_name('bar'); session_start(); if(isset($_COOKIE[session_name()])){ setcookie(session_name(), '', time()-42000); //このスクリプト以降に$_COOKIEの内容も必要なければ $_COOKIE[session_name()] = ''; } ?> このようになると思いますがいかがでしょうか。
その他の回答 (1)
- hogehoge78
- ベストアンサー率80% (433/539)
$_COOKIE[sessin_name()] で引けるのは、session_start時に発行された、sessionのkeyを保存してあるcookieだけですので、 どこかの遷移で、 setcookie('bar', '', time()-42000); とする必要があります。 session_name == 'bar' なのであれば話は変わりますが。
お礼
setcookie("bar",session_id(), time()+3600); sessionid() をランダムの文字列に変更して対応しました。 有難うございました。 すみません。素人なもので・・・。
補足
うまくいきませんね・・・。 入力フォームのページで session_start(); setcookie("bar",session_id(), time()+3600); 完了ページで session_start(); $_SESSION = array(); if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000); } session_destroy(); としました。 実は同じ処理を www.hoge.com/index.php で同様のフロー ( www.hoge.com/check.php www.hoge.com/thanks.php(セッションの削除) ) で実行したらうまくいきました。 なぜ一つ階層を下げるとうまくいかないのか不思議です。
お礼
setcookie("bar",session_id(), time()+3600); sessionid()の部分をランダムの文字列に変更して対応しました。 これでうまくいきました。 有難うございました。 すみません。素人なもので・・・。