0

PHP で、セッションが存在する限り存続する Cookie を作成するにはどうすればよいですか?

シナリオ: Web サイトは複数のページで構成されており、実行される PHP スクリプトもloginありview cartます。一部は Apache によってキャッシュから読み込まれた静的な html ファイルであり、これらのページでは PHP は呼び出されません。

セッション ID は、PHP を実行するすべてのページで生成および維持されます。セッションは、ユーザーが実際にログインしているかどうかに関係なく存在します。セッションには、ユーザーがログインしているかどうかが格納されます。ブラウザには sessionID Cookie しかありません。

キャッシュされたページには、ユーザーがログインしているかどうかに応じて、log inまたはボタンが表示されます。log outPHP はキャッシュされたページでは呼び出されないため、ここではセッション値を読み取ることができません。IsLoggedIn Cookie をチェックするには、小さな JavaScript 関数を使用する必要があります。

問題: ユーザーがログインすると、PHP は JavaScript が読み取る Cookie を設定できます。良い。ユーザーがログアウト ボタンで明示的にログアウトすると、Cookie の有効期限が切れる可能性があります。良い。

しかし、ユーザーがコンピューターを離れた場合、セッションは PHP を使用したページとの最後の対話から x 秒で期限切れになりますが、Cookie は作成されてから y 秒で期限切れになります。これにより、一方が他方よりも先にタイムアウトする可能性があります。

常に一緒に期限切れになるように、2 つを同期する方法はありますか?

4

1 に答える 1

0

セッションをデータベースに保存して、セッションをより細かく制御し、時間間隔で設定された ajax を使用してチェックを行うことができます。これにより簡単になり、Cookie が不要になります。「remember me」機能が必要な場合は、Cookie に保存された一意の識別子を使用して、setcookie("nameofcookie", "unuiq md5 value maybe", time()*3600));

ただし、データベースでセッションを制御する場合は、セッションの長さも制御でき、すべてのロジックを php に含めることができます。

このPHPセッションタイムアウトを行うこともできます

それが私のやり方です。

于 2013-02-22T21:03:04.153 に答える