PHP - Users Online v3 PHP Script

PHP - Users Online v3 PHP Script

Hello, if you are developing a web application, you may need this online users script to show how many users is online.

Yesterday i wrote a php class for it and decide to share it.
Creating table

Well, Before using this class, you must create a table in your database:

 
 

CREATE TABLE `online_users` (

`session_id` CHAR(150) NOT NULL,

`last_activity` INT(11) NOT NULL DEFAULT '0'

);

 

Creating php file

Next step is create and using 'SA_USERSONLINE' Class!

SA_USERSONLINE class:

 
 

<?php

/*
* Author : Reza Ramezanpour <<a href="mailto:reza.irdev@gmail.com" rel="nofollow">reza.irdev@gmail.com</a>>
* Website: <a href="http://softafzar.net
" rel="nofollow">http://softafzar.net
</a> */

class SA_USERSONLINE
{

protected $DB_HOST = DB_HOST;

protected $DB_NAME = DB_NAME;

protected $DB_USER = DB_USER;

protected $DB_PWD = DB_PWD;

protected $session_id = null;

protected $time = null;

protected $timeout = 15;

protected $link = null;

protected $stmt = null;

function __construct ()
{
session_start();
$this->session_id = session_id();
$this->time = time();
$this->link = mysqli_connect($this->DB_HOST, $this->DB_USER,
$this->DB_PWD, $this->DB_NAME);
}

/**
* Gets current online users
*/
function get_online_users ()
{
$this->delete_update_onlineusers();
$this->insert_onlineusers();
$this->stmt = mysqli_query($this->link,
'SELECT session_id FROM online_users');
return mysqli_num_rows($this->stmt);
}

private function already_registred ()
{
$this->stmt = mysqli_query($this->link,
"SELECT session_id FROM online_users WHERE session_id='$this->session_id'");
if (! $this->stmt || mysqli_num_rows($this->stmt) <= 0)
return false;
return true;
}

private function insert_onlineusers ()
{
if (! $this->already_registred()) {
mysqli_query($this->link,
"INSERT INTO online_users VALUES('$this->session_id',$this->time)");
}
}

private function delete_update_onlineusers ()
{
$timeout = $this->time - ($this->timeout * 60);
mysqli_query($this->link,
"DELETE FROM online_users WHERE last_activity<=$timeout");
mysqli_query($this->link,
"UPDATE online_users SET last_activity=$this->time WHERE session_id='$this->session_id'");
}

/**
* Set timeout in minutes.
*
* @param int $timeout
*/
function set_timeout ($timeout)
{
$this->timeout = ((int) $timeout);
}
}

?>

 

Example usage:

 
 

$usersOnline = new SA_USERSONLINE();
echo 'Online users: ', $usersOnline->get_online_users();

 

Also, You can customize session timeout(in minutes):
$usersOnline->set_timeout(15);

NOTE: If database connection is already established, You should remove lines 34 and 35:

 
 

$this->link = mysqli_connect($this->DB_HOST, $this->DB_USER,
$this->DB_PWD, $this->DB_NAME);

 

 

 

Comments

Popular posts from this blog

Motos Android Mame Game Download

StatusNet Micro Blog PHP Script Free Download

1941 Counter Attack (Japan) Windows Game Download