0

ユーザーが PHP にログインするときに、セッション Cookie とその寿命をリセットしようとしています。それはかなり些細なことに聞こえますが、私はまだそれを正しくするのに苦労しています.

ページが読み込まれるとき、ユーザーはすでに Cookie を持っている場合と持っていない場合があります。彼が持っている場合は、それを削除して sessionId をリセットしたいと思います。そうでない場合は、適切な寿命を持つ新しいものを彼に与えます。session_status()使用しているPHPのバージョンにより使用できません。

これが私が思いついたものですが、ユーザーが既にセッション 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

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

助けてくれてどうもありがとう

4

2 に答える 2

1

PHP側でセッションを破棄/再開する必要はなく、クライアントに新しいCookieを送信するだけです。(既存のセッションIDを使用して)もう一度呼び出すだけsetcookie()で、うまくいくはずです。

于 2012-05-07T14:12:45.463 に答える
0

関数を使用session_destroy()して、現在のセッションに関連付けられているすべてのデータを破棄し、関数を使用setcookie()して Cookie の有効期限を過去に設定し、ブラウザーで削除メカニズムをトリガーすることができます。

何かのようなもの:

if (isset($_COOKIE[session_name()])) setcookie(session_name(), false);
session_destroy();
setcookie(session_name(), "", time() - 3600);
);
session_start();
// do stuff
于 2012-05-07T13:08:40.230 に答える