2012-05-07 7 views
0

セッションクッキーとそのユーザーがPHPでログインしたときに、セッションクッキーをリセットしようとしています。 それはかなり些細な音だが、私はそれを正しくするためにまだ苦労している。PHPでクッキーライフとセッションIDをリセットする

ページが読み込まれると、ユーザーはCookieを持っていてもいなくてもかまいません。彼が持っているなら、私はそれを削除してsessionIdをリセットしたい、私は彼に適切な人生を持つ新しいものを与えるだろう。私は使用しているPHPのバージョンのためsession_status()を使用できません。

これは私が思いついたものですが、ユーザーがすでにセッションCookieを持っている場合は動作しません。ユーザーがログインしている場合は

if (isset($_COOKIE[session_name()])) setcookie(session_name(), false); 
session_set_cookie_params(2678400); // sets cookie life to one month 
session_start(); 
// do stuff 

、古いクッキーが正常に削除されますが、新しいクッキーをsession_start()配信しません。セッションIDの作成ロジックを手動で実装することなく、新しいCookieを強制的に配信する方法はありますか?あなたの助け

答えて

1

、あなただけのクライアントに新しいクッキーを送信する必要があります。ちょうどsetcookie()(既存のセッションIDで)を呼び出すと、そのトリックを行う必要があります。

+0

ありがとう!この方がはるかに簡単です。私がどのように実装したのか知りたい人のために、 'if(isset($ _ COOKIE [session_name()])setcookie(session_name()、$ _COOKIE [session_name()]、time()+ 2678400); else session_set_cookie_params(2678400); ' –

+0

@Madこれはsession_startの後ですか? –

0

ため

どうもありがとうあなたに除去機構をトリガするために、過去にあなたのクッキーの有効期限を設定するために、現在のセッションに関連付けられたすべてのデータとsetcookie()機能を破壊するsession_destroy()機能を使用することができますブラウザ。

ような何か:あなたは/はPHP側でセッションを再起動破壊する必要はありません

if (isset($_COOKIE[session_name()])) setcookie(session_name(), false); 
session_destroy(); 
setcookie(session_name(), "", time() - 3600); 
); 
session_start(); 
// do stuff 
+0

Mmh、ありがとうございますが、私はそれがうまくいくかどうかはわかりません。 'session_destroy()'は 'session_start()'の後に呼び出されるべきです。私が書いたことで、存在したときにクッキーを削除しましたが、新しいものを与えることができませんでした。また、あなたのコードは既存のクッキーを削除しますが、ログインしたユーザに新しいクッキーを与えません... 'session_destroy()'の前に 'session_start()'を呼び出すだけでは機能しません。 –

関連する問題