2010-11-19 16 views
2

phpでは、ユーザーのIDでセッションを作成します。だから、私はユーザ3のために、私は、ユーザ3のすべてのセッションを一覧表示することができ方法はありユーザーのphpセッションを一覧表示し、そのセッションをリモートでログアウトします

$_SESSION['id'] = $id; 

を言うのですか?また、リモートでセッションを終了させる(ログアウトする)。私はgmailのようなものをユーザーに与えて、自分のアカウントのセッションを閲覧できるようにしたいと考えています。また、ユーザーアカウントのセッションを遠隔からログアウトできるようにしたいと考えています。私のサイトのほとんどは行われていますが、これは私が非常に不確かなものです。私はPhpがこれをサポートしているかどうかはわかりません。私はセキュリティを強化するためにこれをしたいです。誰かが学校やどこかに行ってログアウトするのを忘れてしまったとしたら、自分のアカウントを持つ別のコンピュータから遠隔操作することができます。また、前回のセッションでもIPを保存する予定です。したがって、IPアドレス、前回のリストも表示できます。これを行う方法について手がかりがありますか?このようなことはPHPセッションで済んでいますか?

答えて

5

セッションデータをデータベースに書き込むセッションハンドラを設定できます。次に、そのテーブルを分析して、同じIDを持つ他のセッションを見つけることができます。セッションウェイザッツ

http://php.net/manual/en/function.session-set-save-handler.php

。しかし、セッションデータがシリアライズされているため、すべてのセッションを読み込み、デシリアライズして1つのキー "id"を検索する必要があるため、これを自分で実装することをお勧めします。

session-id、user-id、ip、およびtimeで表を作成できます。ユーザーがログインするたびに、そのテーブルにレコードを入れ、すべてのリクエストに時間(「最後に見た」のようなもの)を更新する必要があります。 idが1つの他のユーザーがいるかどうかを知りたい場合は、単にuser-id列を選択してください。 「正当な」ユーザは、session-idによって識別できます。 次に、「リモートログアウト」にセッションを追加する場合は、「force_logout」などの列を追加できます。次のリクエスト( "違法な"ユーザのリクエスト)で、このフラグを読んでセッションが終了すれば、セッションを終了します。

+0

を良いアイデア。私はあなたが言うことを得て、私はユーザーが禁止されている場合、私はすべてのページの負荷をチェックし、私は禁止されているとマークされている場合は禁止と死んでいると言ってページをエコーし​​ます。したがって、セッションが「違法」である場合は、アクティブな場合は0、そうでない場合は1を使用できます。したがって、0の場合、それらはログアウトされてから消滅します。すべてはグローバルヘッダファイルで処理されます。どのようにガベージコレクションを処理するのですか?また、セッションがタイムアウトした場合、再びログインした場合、同じセッションIDを取得できるのでしょうか? – Keverw

+0

MySqlの結果を一覧表示しているときに、そのセッションがまだ有効かどうかを確認することはできますか?彼らがログアウトしたように、私はmysqlに伝えることができます。しかし、彼らがタイムアウトすればどうなりますか?セッションがまだアクティブかどうかを確認できますか? – Keverw

+0

* gx_maxlifetimeのini設定を読み込み、* time * -columnに格納した値と比較することができます – KingCrunch

0

ユーザーIDの使用次の関数によって(例えばRESTによって)データベースに、リモートセッション終了のために(ユーザログインながらのsession_id()関数によってそれを得る)SESSION_IDを保つことができます。

public function drop_session($session_id) { 
     if ($session_id) { 
      session_id($session_id); 
      //session_start(); 
      session_destroy(); 
      session_commit(); 
     } 
    } 
関連する問題