この状況でよく使用される解決策は、次のとおりです。
- セッション期間が長すぎない:ユーザーがアクティブでない場合は期限切れになります(これが機能する方法です。ユーザーが多い場合はサーバーに適しています)
- ユーザーがログインするときに、ユーザーが認識されるために必要なものを含むCookieを設定します
- 彼がサイトに戻ってきた場合(Cookieを使用し、アクティブなセッションがない場合)、そのCookieに含まれる情報を使用して自動ログインし、同時にセッションを再作成します。
こちらです:
- 正当な理由もなく「アクティブ」なセッションが何千もありません
- あなたはセッションが機能する標準的な方法を維持します
また、少なくともユーザーの観点からは、「ログアウトされない」という利点があります。
また、「通常の」セッションでは、ユーザーがブラウザを閉じると、セッションIDを含むCookieが削除されるため、セッションの有効期間に関係なく、ユーザーは切断されることに注意してください。
私が提案する解決策では、ユーザーのコンピューターにCookieを保持する期間を設定するのはあなたです;-)
ただし、ユーザーが手動でログアウトする場合は、もちろん、セッションとCookieの両方を削除する必要があるため、すぐに再自動ログインすることはありません。
もちろん、Cookieに何を設定するかについて注意する必要があります。Cookieは完全に安全ではないため、たとえば、Cookieにパスワードを保存しないでください;-)
実際、この方法で「rememberme」機能がよく機能します。ただし、ここでは、ユーザーが「rememberme」をアクティブにするためにチェックボックスをオンにする必要はありません;-)
そのようなものを開発する時間がない場合、非常に迅速で汚い方法は、すべてのページでAjaxリクエストを使用することです。これにより、サーバー上のPHPページに「ping」が実行されます。セッションがアクティブです(ただし、これは良い方法ではありません。サーバー上にはまだたくさんのセッションがあり、役に立たないリクエストがたくさんあります...そしてユーザーがそうしない限り機能します彼のブラウザを閉じます)。