Access control system description.
[fa-stable.git] / admin / db / users_db.inc
index 496f18acc5304f7fae4e2d9222757fc1d2132c96..3f484639e442843993559a8a2b28e053cf0f7e96 100644 (file)
@@ -163,4 +163,47 @@ function check_user_activity($id)
 
        return $ret[0];
 }
+
+//-----------------------------------------------------------------------------------------------
+function show_users_online()
+{
+       $timeoutseconds = 120;
+
+       $timestamp=time();
+       $timeout=$timestamp-$timeoutseconds;
+       /*
+       This will find out if user is from behind proxy server. 
+       In that case, the script would count them all as 1 user.
+       This function tryes to get real IP address.
+       */
+       if (isset($_SERVER['HTTP_CLIENT_IP'])) {
+               $ip = $_SERVER['HTTP_CLIENT_IP'];
+       }
+       elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
+               $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
+       }
+       elseif (isset($_SERVER['HTTP_X_FORWARDED'])) {
+               $ip = $_SERVER['HTTP_X_FORWARDED'];
+       }
+       elseif (isset($_SERVER['HTTP_FORWARDED_FOR'])) {
+               $ip = $_SERVER['HTTP_FORWARDED_FOR'];
+       }
+       elseif (isset($_SERVER['HTTP_FORWARDED'])) {
+               $ip = $_SERVER['HTTP_FORWARDED'];
+       }
+       else {
+               $ip = $_SERVER['REMOTE_ADDR'];
+       }
+
+       // Add user to database
+       db_query("INSERT INTO ".TB_PREF."useronline (timestamp, ip, file) VALUES ('". $timestamp ."','". $ip ."','". $_SERVER['PHP_SELF'] ."')");
+       //Remove users that were not online within $timeoutseconds.
+       db_query("DELETE FROM ".TB_PREF."useronline WHERE timestamp<". $timeout);
+
+       // Select online users
+       $result = db_query("SELECT DISTINCT ip FROM ".TB_PREF."useronline");
+       $users = db_num_rows($result);
+       return "$users ".($users == 1 ? _("user online") : _(" users online"));
+
+}
 ?>
\ No newline at end of file