ページ閲覧中のオンラインユーザ表示方法

session_id()で、mysqlにセッションIDと時間を保存していき、mysql_num_rowsでセッション数が保存されている行をカウントし、一定時間経過したらセッションIDを削除します。

<?php
session_start();
$session=session_id();
$time=time();
$time_check=$time-300;

$host="localhost";
$username="dbuser";
$password="xxxx";
$db_name="online";
$tbl_name="online_user";

mysql_connect("$host", "$username", "$password") or die("could not connect to server.");
mysql_select_db("$db_name") or die("cannot select DB");

$sql="SELECT * FROM $tbl_name WHERE session='$session'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);

// if count is 0, then enter the values
if($count=="0"){
  $sql1="INSERT INTO $tbl_name(session, time)VALUES('$session', '$time')";
  $result1=mysql_query($sql1);
  }
  // else update the values
  else {
    $sql2="UPDATE $tbl_name SET time='$time' WHERE session='$session'";
    $result2=mysql_query($sql2);
  }

  $sql3="SELECT * FROM $tbl_name";
  $result3=mysql_query($sql3);
  $count_user_online=mysql_num_rows($result3);
  echo "<b>Users Online: </b> $count_user_online ";

  //after 5 minutes, session will be deleted
  $sql4="DELETE FROM $tbl_name WHERE time<$time_check";
  $result4=mysql_query($sql4);

  mysql_close();

?>