Jump to content

[SOLVED] Track users online time


cmgmyr

Recommended Posts

Hey All,

I need to track the time online of my users on a site. Just like on here where you can see how many days/hours/minutes you have been logged in. I'm a little stuck on how to start. I've done some searches for this sort of thing but I haven't come up with anything decent. Any ideas or places that you can point me to?

 

Thanks,

-Chris

Link to comment
https://forums.phpfreaks.com/topic/71076-solved-track-users-online-time/
Share on other sites

Ok, so I figured it out. Here it is if anyone wants to do something like this.

 

1. make a "logged_time" column somewhere in your database (I put this in my users table)

2. When they log in do something like this:

<?php
$_SESSION['user_id'] = $userid;
$_SESSION['online_time'] = mktime();
?>

3. On the top of each page...or in your header file have this:

<?php
if(getUser()){ //<- this checks to see if the user is logged on...you can do this anyway you want
onlineTime(); //<- this alters/saves the online time
}
?>

4. Here are your main functions

<?php 

//This function logs the time into the database and makes a new time
function onlineTime(){
//Make DB connection here

$timeout = 5; //this is the timout in minutes

$userid = $_SESSION['user_id'];

$now = time();
$difference = $now - $_SESSION['online_time'];
if($difference <= ($timeout * 60)){
	mysql_query("UPDATE users SET logged_time = logged_time + $difference WHERE userid = $userid");
}
$_SESSION['online_time'] = mktime();
}

//This function calculates and outputs the logged time
function showOnlineTime($userid){
//Make DB connection here

$result = mysql_query("SELECT logged_time FROM users WHERE userid = $userid");
if(mysql_num_rows($result) > 0){
	list($total) = mysql_fetch_row($result);
	$days = floor($total / 86400);
	$hours = floor(($total % 86400) / 3600);
	$minutes = floor(($total % 3600) / 60);
	echo "$days days, $hours hours and $minutes minutes.";
}else{
	echo "No Logged Time Available";
}
}

?>

 

Simple enough right?

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.