Trill Hosting - Cheap Web Hosting, Register Cheap Domains, Dedicated Servers Hosting, UK Reseller, US Reseller, Forum Hosting, Business Web Hosting
+ Reply to Thread
Results 1 to 3 of 3

Thread: Online Users Counter

  1. #1
    Administrator Jaan's Avatar
    Join Date
    Nov 2009
    Location
    Estonia
    Posts
    372
    Points
    968

    Online Users Counter

    Hey!

    Now I'll show you how to see how many users are browsing your website. There are many ways to display it but I'm trying to keep it simple and clean.

    First of all we have to create a two tables to your database.

    Code:
    CREATE TABLE `uonline` (
      `session` varchar(100) NOT NULL,
      `time` int(5) NOT NULL default '0'
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    It will create two tables. One is session and other is time. They are going to store our information.

    Now it's time for PHP. Let's create our main variables
    Code:
    <?php
    session_start();
    $ses = session_id();
    $time = time();
    $timech=$time-300;
    session_start(); - This wills start a session
    $ses = session_id(); - This will get our session's ID
    $time = time(); - This will get the time
    $timech=$time-300; - This will set our time to 5min

    Now we have to connect to the database:

    Code:
    // Declare SQL login info
    $host = "localhost";
    $username = "";
    $password = "";
    $dbname = "";
    
    // Now we are going to connect to our database
    mysql_connect("$host", "$username", "$password")or die("<font style='color:red'><b>Can not connect:</b> ".mysql_error()."</font>");
    mysql_select_db("$db_name")or die("<font style='color:red'><b>Can not select the database:</b> ".mysql_error()."</font>");
    $host = "localhost"; - Your SQL's host name, usually it's "localhost"
    $username = ""; - Your MySQL username
    $password = ""; - Your MySQL password
    $dbname = ""; - Your database's name

    Now we have to look for existing sessions and get the number of sessions.

    Code:
    $result = mysql_query("SELECT * FROM uonline WHERE session='$ses'");
    $num = mysql_num_rows($result);
    $result = mysql_query("SELECT * FROM uonline WHERE session='$ses'"); - This will select all info from session column where it's value is "$ses"
    $num = mysql_num_rows($result); - It will tell us how many active records are in session column

    Code:
    if($num == "0"){
    $result1 = mysql_query("INSERT INTO uonline (session, time)VALUES('$ses', '$time')");
    }else{
    $result2 = mysql_query("UPDATE uonline SET time='$time' WHERE session = '$ses'");
    }
    if($num=="0"){ - If there's no records in session column then we must insert some records
    $result1 = mysql_query("INSERT INTO uonline (session, time)VALUES('$ses', '$time')"); - Inserts session's ID and time to database
    }else{ - But if there was more records than 0, let's update their records
    $result2 = mysql_query("UPDATE uonline SET time='$time' WHERE session = '$ses'"); - Updates existing records
    } - Ends If statement

    Now let's find our info again from the columns:

    Code:
    $result3 = mysql_query("SELECT * FROM uonline");
    $result3 = mysql_query("SELECT * FROM uonline"); - This will get all info from uonline table

    It's time for showing how many users are looking your site:

    Code:
    $usersonline = mysql_num_rows($result3);
    echo "There are: <b>".$usersonline."</b> users online";
    $usersonline = mysql_num_rows($result3); - It will get the number of records in columns
    echo "There are: <b>".$usersonline."</b> users online"; - This will show how many users are on your site

    When the users have left, you must delete their records from database.

    Code:
    mysql_query("DELETE FROM uonline WHERE time<$timech");
    ?>
    mysql_query("DELETE FROM uonline WHERE time<$timech"); - Deletes records from database when 5min has been thru.

    And here's the full code:

    Code:
    <?php
    session_start();
    $ses = session_id();
    $time = time();
    $timech=$time-300; 
    
    $host = "localhost";
    $username = "";
    $password = "";
    $dbname = "";
    
    mysql_connect("$host", "$username", "$password")or die("<font style='color:red'><b>Can not connect:</b> ".mysql_error()."</font>");
    mysql_select_db("$db_name")or die("<font style='color:red'><b>Can not select the database:</b> ".mysql_error()."</font>");  
    
    $result = mysql_query("SELECT * FROM uonline WHERE session='$ses'");
    $num = mysql_num_rows($result); 
    
    if($num == "0"){
    $result1 = mysql_query("INSERT INTO uonline (session, time)VALUES('$ses', '$time')");
    }else{
    $result2 = mysql_query("UPDATE uonline SET time='$time' WHERE session = '$ses'");
    } 
    
    $result3 = mysql_query("SELECT * FROM uonline"); 
    
    $usersonline = mysql_num_rows($result3);
    echo "There are: <b>".$usersonline."</b> users online";  
    
    mysql_query("DELETE FROM uonline WHERE time<$timech");
    ?>
    Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
    Reply With Quote Reply With Quote  
    Share with Facebook

  2. #2
    Junior Member Prog4rammer's Avatar
    Join Date
    Apr 2010
    Posts
    7
    Points
    7
    Thanks a lots but Found problem in My Code

    Code:
    
    
    
    <?
    
    
       session_start();
       $ses = session_id();
       $time = time();
       $timech = $time - 300;
       
       
       $username = 'root';
       $password = '';
       $host = 'localhost';
       $database = 'online';
       
       $dbc = mysql_connect($host,$username,$password);
       
       mysql_select_db($database);
       
       if(!$dbc)
       {
        
          die('Could Not Connect' . mysql_error());
       
       }
       else
       {
       
           $query = "SELECT * FROM onlines WHERE session = ('$ses')": 
           $Result = mysql_query($query,$dbc);
    	   $Num = mysql_num_rows($Result);  // It will tell us how many active records are in session column
    	   
    	   
    	   if($num == "0")
    	   {
          $resultInsert = mysql_query("INSERT INTO online (session, time)VALUES('$ses', '$time')");
           }
    	   else
           {
          $resultUpdate = mysql_query("UPDATE online SET time='$time' WHERE session = '$ses'");
           }
    	   
    	   $resultSelect = mysql_query("SELECT * FROM online");
    	   
    	   $usersonline = mysql_num_rows($resultSelect);
           echo "There are: <b>".$usersonline."</b> users online";
    	   
    	   mysql_query("DELETE FROM online WHERE time = $timech"); //Deletes records from database when 5min has been thru.
    	   
     
       }
       
    
    ?>
    Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
    Reply With Quote Reply With Quote  
    Share with Facebook

  3. #3
    Administrator Jaan's Avatar
    Join Date
    Nov 2009
    Location
    Estonia
    Posts
    372
    Points
    968
    Can you tell me what error do you get?
    Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
    Reply With Quote Reply With Quote  
    Share with Facebook

+ Reply to Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts