1

ユーザー (自己ではない) が現在ログインしているかどうかを表示する方法を見つけようとしています。現在、これは edit_user ページ用であり、当面は管理者としてのみ役立つことを意図していますが、次のように拡張される可能性があります。私は開発します。私はその線に沿って何かを考えていました

if( $user->ion_auth->logged_in() ) {
    echo "<span class='active'>$user->username</span>";
}

しかし、それはうまくいきません。何か案は?

私は自分の答えを見つけて以下に提供しました。他の答えといくつかのアイデアの発火に感謝します。

4

3 に答える 3

2

「アクティブ」フィールドは、ユーザーのログイン機能をオン/オフできるようにするために使用されます。データベースを調べると、作成したすべてのユーザーが「アクティブ = 1」になっていることがわかります。このフィールドでは、ユーザーがログインしているかどうかはわかりません。何らかの指標を提供できる唯一の種類のフィールドは、「last_login」フィールドです。これは、最後にいつログインしたかを示します。ただし、これは、現在ログインしているかどうかを示すものではありません (基本的に、ログインしているかどうかを知りたい場合)。まだアクティブなセッションがあり、そのユーザーの PC を使用していないため、これを知る方法はありません)。

ユーザーが現在ログインしているかどうかをより正確に追跡する唯一の方法は、ユーザーが最後にページにアクセスした時間をデータベースに追跡させることです。ユーザーが最後にページにアクセスしたのがかなり前の場合、ユーザーがログインしていないことがわかります。これにより、サイトのすべてのリクエスト/更新に対して基本的にデータベースの書き込みがあるため、このアプローチはお勧めしません。ユーザー。これは、特にユーザーで忙しい場合、データベース/サーバーの負荷にとって問題になる可能性があります.

では、より合理的な選択肢にはどのようなものがありますか?

  1. 前回のログインを確認して、誰がログインしたかを把握してください。
  2. ユーザーがまだログインしている場合は、システム前またはコントローラー前のフックを実行してユーザーのテーブルを更新しますが、これをデータベースに書き込む頻度を減らします。これを追跡するには、ユーザーのテーブルに新しいフィールドを追加する必要があります。
  3. Google アナリティクスは、サイトのアクティブ ユーザー数を概算します。ただし、これは合計を提供するだけであり、これらのユーザーが実際に誰であるかについての詳細は提供しません.
于 2013-05-29T02:47:16.723 に答える