Click here to Skip to main content
15,885,998 members
Articles / Programming Languages / PHP
Tip/Trick

Check Member's/ User's Online or Offline Status

Rate me:
Please Sign up or sign in to vote.
5.00/5 (3 votes)
11 Dec 2012CPOL 20.6K   1  
The following piece of code will calculate the last visited time of a Member/User and calulate the time difference with the current time.

Check Members online offline CAKEPHP

Introduction

The following piece of code will calculate the last visited time of a Member/User and calculate the time difference with the current time. And if the Member/User's last visited time is greater than 10 minutes then that will be considered OFFLINE status, otherwise ONLINE.

Background

I was just searching for a time difference code in Bakery but couldn't find any simple code. I developed and used the following code to calculate the time a User/Member is online or offline.

Using the code

There are only three steps to follow. This code is only for CakePHP 1.5.

"I am assuming that you have a table named MEMBER (you can customize it according to your requirements)".

  1. Make a field last_visit (DATETIME) in MEMBER table.
  2. For app controller:
  3. PHP
    // " Component Class "
    
    class AppController extends Controller {        
        /*
        *
        * beforeRender() function will run on every visit of the website
        */
        function beforeRender()
        {            
            ### UPDATE LAST VISIT ###
            $online_offline_status = 0;
            if ($this->Session->check('userId')==true){
            // Checking for the SESSION - Proceed only if MEMBER/USER is logged in.
                $this->loadModel('Member'); // Loading MEMBER Model
                
                // UPDATE MEMBER VISIT TIME
                $last_visit = date('Y-m-d H:i:s', time());
                $this->Member->updateAll(array('Member.last_visit' => '"'.$last_visit.'"'), 
                                array('Member.id' => $this->Session->read('userId')));
    
                // GET TIME DIFFERENCE
                $member_last_visit = $this->Member->find('first', array('conditions' => 
                   array('Member.id' => $this->Session->read('userId'))));
                $current_time = strtotime(date("Y-m-d H:i:s")); // CURRENT TIME
                $last_visit = strtotime($member_last_visit['Member']['last_visit']); // LAST VISITED TIME
                
                $time_period = floor(round(abs($current_time - $last_visit)/60,2)); //CALCULATING MINUTES
                
                //IF YOU WANT TO CALCULATE DAYS THEN USER THIS
                //$time_period = floor(round(abs($current_time - $last_visit)/60,2)/1440);
                
                echo $time_period;
                if ($time_period <= 10){
                    $online_offline_status = 1; // Means User is ONLINE
                } else {
                    $online_offline_status = 0; // Means User is OFFLINE
                }
            }    
            $this->set('online_offline_status', $online_offline_status);
            
        }//end beforeRender()            
    }
  4. Simply use the following code in your .ctp file according to your demand.
  5. PHP
    // " View Template "
    <!-- IF USER IS OFFLINE -->
    
    if ($online_offline_status == 0){
      echo '(Member/User is Offline)';
    <!-- IF USER IS OFFLINE -->
     } else if ($online_offline_status == 1) {
      echo '(Member/User is Online)';
    }

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer HaiTechnologies
United Arab Emirates United Arab Emirates
I love Web Technologies.

Specialties
MVC, Web Scrapping, Webservices, CAKE PHP, WordPress, Joomla, Drupal, Magento, OsCommerce, Paypal, Authorize.net, XML, CSS, DOM, HTML, AJAX, JavaScript, Jquery, Custom CMS or content management system development, E-commerce, ERP application development, XML, XSLT, MySql, SQL Server 2008 R2, 3rd party libraries, Opencart, Cubecart, Adobe PhotoShop CS5, basic knowledge of Flash. Google API, FBML, Web 2.0

Comments and Discussions

 
-- There are no messages in this forum --