2009-08-25 14 views
11

私のサイトでは、セッションでログイン機能を使用しています。 このセッションは、ユーザーがログアウトしたかどうかにかかわらず、数分後に期限切れになります。 私が望むのは、ユーザーがログアウトしたときにセッションが期限切れになるということです。ユーザーが自分のアカウントをログアウトしてから2〜3日後に戻ってきた場合、ログインしているように表示されます。セッションはそれ自身で期限切れになることはありません

私はセッションの有効期限が切れているが、ログアウトにかかった時間に関係なく、ユーザーがログアウトイベントを期限切れにする必要があるという例がいくつか見つかりました。

どうすればいいですか?

編集:

session_cache_expire(0); 
session_start(); 

これはそうする書き込み方法は何ですか?多くの場合、このような状況では、使用されている

答えて

24

ソリューションは、あるに:

  • 長すぎないセッション継続時間を持っている:ユーザーがアクティブでない場合、それはそれはそれが動作するだけの方法です(期限切れになります -
  • ユーザーがログインするときに、彼が認識するために必要なものを含むクッキーを設定します。
  • (クッキー、アクティブなセッションがない場合)、そのクッキーに含まれている情報を使用して自動的にログインし、同時にセッションを再作成します。

この方法:

  • あなたは
  • 正当な理由なくして、「アクティブ」セッションの数千人を持っていないあなたは、セッションが

を仕事とあなたが持っている標準的な方法を保ちます少なくともユーザの視点からは、「夢中にならない」という利点があります。

「通常の」セッションでは、ユーザーがブラウザを閉じるとセッションIDを含むCookieが削除されるため、セッションの存続期間に関係なく切断されます。私が提案するソリューションで
は、あなたはクッキーは、ユーザーが手動でアウトにログインすると、あなたが持っている、しかし、それは意味


ユーザーのコンピュータ;-)に保持する期間を設定します一つです彼のセッションとクッキーの両方を削除することはもちろんです - だから、すぐに再ログインすることはありません。もちろん


、あなたがクッキーに設定したものについて注意する必要があります:クッキーは非常に安全ではありませんので、それにパスワードを保存しない、例えば;-)


実際に、このようなやり方は、「私を覚えている」機能がしばしば機能することです。ただし、ここであなたのユーザーは「私を覚えてください」というチェックボックスをオンにする必要はありません;-)


この種のものを開発する時間がなければ、かなり素早く汚い方法がありますすべてのページでAjaxリクエストを使用すると、サーバー上のPHPページに「ping」します。これによりセッションはアクティブに保たれます(ただし、これはかなり良い方法ではありません。サーバー上では、無駄なリクエストがたくさんあります...ユーザーがブラウザを閉じない限り動作します)。

+0

と:可能な自動ログイン機能が動作することができる方法で次のように読んでください私はそれをデータベースに保存しました。ページが呼び出されると、システムのクッキーがチェックされ、両方が一致した場合はデータベースのものと一致します。それ以外の場合はログインしていない人を表示します。そして、人がログアウトすると、クッキーをnullに設定します。 これは正しい方法ですか?これは安全ですか? – developer

+0

少なくとも私には似ているようだ - 男のコンピュータを使っている人は誰でも自動的にログオンするので、決して「完璧なセキュリティ」にはならないだろうが、これで十分だと思う:-) –

+0

私はセキュリティを理解している問題。まあありがとうMartin :-) – developer

0

テスト中にCookieを削除しますか? Cookieは有効になっていますかコードのどこかでセッションを破棄していますか?

Quick question about sessions in PHPまた、ログインしたままにする方法について説明しています。ユーザーが永遠にログインしたままにしたい場合は、cronjob/sheduledタスクを実行しないでください。

2

PHPの内部セッション処理だけでは、これを行うことはできません。 PHPはセッションIDをセッションクッキーに送信します。セッションクッキーはユーザーがブラウザを閉じると終了します。何らかの自動ログインを実現するには、ユーザーのブラウザに長く持続するCookieを設定し、これらのCookieの認識とCookieの値とそれぞれのユーザーアカウントの間のマッピングを処理するコードが必要です。

これはセキュリティ上の問題に大きく影響するため、多くのことを考慮する必要があります。その後、私は、ユーザー名とそれに連結乱数でクッキーを設定している

関連する問題