Revision: 67312
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at September 7, 2014 00:07 by Sadeveloper
Initial Code
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 <[email protected]> * Website: http://softafzar.net */ 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);
Initial URL
http://www.softafzar.net/thread1717.html/
Initial Description
Original tutorial here : http://softafzar.net/thread1717.html .
Initial Title
PHP - Users Online Script
Initial Tags
Initial Language
PHP