電子書籍の厳選無料作品が豊富!

現在、会員制グループサイトを構築中です。
【サイト構成】
●TOPページより新規会員登録
●TOPページで個人ログイン→個人専用ページへ
●個人専用ページで新規グループ登録
●個人専用ページでグループログイン→グループページへ
●グループページでグループログアウト→個人ページへ
●グループページOR個人ページで個人ログアウト→TOPページへ

*****************************質問内容******************************
TOPページから個人ログイン後グループログインする際に、現在グループ
ページに現在何人ログインしているかの情報を表示させたいのですが、上
手くいきません。何か良い方法はありませんか?
*******************************************************************

【表示例】
現在、○○(グループ名)には5人入っています!

【構築環境・言語】
●Apache、MySQL、PHP、HTML、JavaScript

【現在の仕様】
・テーブル
●会員用テーブル(個人ID、パスワード、個人情報・・・)
●グループ用テーブル(グループID、グループパスワード、グループ情報)
●メンバーテーブル(グループID、個人ID、Flag(0:In 1:Out))
 *グループIDと個人IDが複合キー

【グループ仕様】
●グループは複数作成、複数所属できる
●グループページにはログインした1つのグループのみの情報を保持
●複数のグループページに入ることはできない

【プログラム】
●グループログインした際に、メンバーテーブルの該当行のFlagを0にする
●グループページでグループログアウトOR個人ログアウト(ボタン)した際に、メンバーテーブルの該当行Flagを1にする
●ページ共通変数・・・$_SESSION['kojinId']
●グループ共通変数・・・$_SESSION['groupId']
●グループログイン・ログアウトの度に$_SESSION['groupId']を更新
●個人ページにログイン後、自分が所属しているグループのメンバーテーブルを参照し、Flagが0の行をカウントする

・問題点
●グループログインしている際に、ログアウト処理を行わないままブラウザを閉じると、メンバーテーブルのFlagが1に更新されない
●ブラウザを閉じたことがわかれば、自動ログアウトさせてDBを更新できるが、閉じたかどうかの情報を知ることができない


簡単な説明でわかりづらいかもしれませんが、ご回答を宜しくお願いします。



 

A 回答 (1件)

>> ●メンバーテーブル(グループID、個人ID、Flag(0:In 1:Out))



上記テーブルに、訪問時間のタイムスタンプフィールドを追加します

Flagはあてになりませんので、
ログイン時と有効なセッションを持つクライアントからのアクセス毎に
セッションの更新と最終訪問時間を更新しましょう

接続者数をカウントするときは、Flag=0かつ最終訪問時間から一定時間(5分とか15分)の者だけを数えればよいです。
その場合の一定時間をセッションの有効時間と合わせておけばユーザも強制ログアウトされたことを認識させられます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!