Join 306,978 Programmers for FREE! Get instant access to thousands of experts, tutorials, code snippets, and more! There are 1,908 people online right now. Registration is fast and FREE... Join Now!
Step1: Creating the database create a new database called 'users', with 3 fields inside a table. These fields are timestamp, ip and file. Name the table useronline by the way. Now with the form on the PhpMyAdmin page, add the following code:
CODE
CREATE TABLE useronline ( timestamp int(15) DEFAULT '0' NOT NULL, ip varchar(40) NOT NULL, file varchar(100) NOT NULL, PRIMARY KEY (timestamp), KEY ip (ip), KEY file (file) );
Step 2: The PHP Script
CODE
<?php //Put your basic server info here $server = "localhost"; //normally localhost $db_user = "username"; //your MySQL database username $db_pass = "password"; //your MySQL database password $database = "users"; $timeoutseconds = 300;
//this is where PHP gets the time $timestamp = time(); $timeout = $timestamp-$timeoutseconds;
//connect to database //$server = localhost probably //$db_user = your MySQL database username //$db_pass = //your MySQL database password mysql_connect($server, $db_user, $db_pass);
//insert the values $insert = mysql_db_query($database, "INSERT INTO useronline VALUES ('$timestamp','$REMOTE_ADDR','$PHP_SELF')"); if(!($insert)) { print "Useronline Insert Failed > "; }
//delete values when they leave $delete = mysql_db_query($database, "DELETE FROM useronline WHERE timestamp<$timeout"); if(!($delete)) { print "Useronline Delete Failed > "; }
//grab the results $result = mysql_db_query($database, "SELECT DISTINCT ip FROM useronline WHERE file='$PHP_SELF'"); if(!($result)) { print "Useronline Select Error > "; }
//number of rows = the number of people online $user = mysql_num_rows($result);
//spit out the results mysql_close(); if($user == 1) { print("$user user online\n"); } else { print("$user users online\n"); } ?>
I've tried to make that code as simple as possible to understand. The //comment won't affect the script, so you can remove those if you want. The script basically works like this. It receives server information and gets he time. In mySQl it fills in the values of the person online and puts up a message if it failed. When the user leaves mySQL deletes the user and displays a message if it failes.
Hello, Thanks for sharing this, I just have a few questions. First, is the file field just for tracking where the user is going? Second, I want to incorporate this into all of my pages, how can I make sure that duplicates are avoided?
Thanks very much, I do realise this is an old topic, sorry
Step1: Creating the database create a new database called 'users', with 3 fields inside a table. These fields are timestamp, ip and file. Name the table useronline by the way. Now with the form on the PhpMyAdmin page, add the following code:
CODE
CREATE TABLE useronline ( timestamp int(15) DEFAULT '0' NOT NULL, ip varchar(40) NOT NULL, file varchar(100) NOT NULL, PRIMARY KEY (timestamp), KEY ip (ip), KEY file (file) );
Step 2: The PHP Script
CODE
<?php //Put your basic server info here $server = "localhost"; //normally localhost $db_user = "username"; //your MySQL database username $db_pass = "password"; //your MySQL database password $database = "users"; $timeoutseconds = 300;
//this is where PHP gets the time $timestamp = time(); $timeout = $timestamp-$timeoutseconds;
//connect to database //$server = localhost probably //$db_user = your MySQL database username //$db_pass = //your MySQL database password mysql_connect($server, $db_user, $db_pass);
//insert the values $insert = mysql_db_query($database, "INSERT INTO useronline VALUES ('$timestamp','$REMOTE_ADDR','$PHP_SELF')"); if(!($insert)) { print "Useronline Insert Failed > "; }
//delete values when they leave $delete = mysql_db_query($database, "DELETE FROM useronline WHERE timestamp<$timeout"); if(!($delete)) { print "Useronline Delete Failed > "; }
//grab the results $result = mysql_db_query($database, "SELECT DISTINCT ip FROM useronline WHERE file='$PHP_SELF'"); if(!($result)) { print "Useronline Select Error > "; }
//number of rows = the number of people online $user = mysql_num_rows($result);
//spit out the results mysql_close(); if($user == 1) { print("$user user online\n"); } else { print("$user users online\n"); } ?>
I've tried to make that code as simple as possible to understand. The //comment won't affect the script, so you can remove those if you want. The script basically works like this. It receives server information and gets he time. In mySQl it fills in the values of the person online and puts up a message if it failed. When the user leaves mySQL deletes the user and displays a message if it failes.
Hello, Thanks for sharing this, I just have a few questions. First, is the file field just for tracking where the user is going? Second, I want to incorporate this into all of my pages, how can I make sure that duplicates are avoided?
Thanks very much, I do realise this is an old topic, sorry
Hello, Thanks for sharing this, I just have a few questions. First, is the file field just for tracking where the user is going? Second, I want to incorporate this into all of my pages, how can I make sure that duplicates are avoided?
Thanks very much, I do realise this is an old topic, sorry
Pete
I suppose you could do a function?
CODE
function updateUserTime(){ //The tutorial code here }
then on every page call the file the function is on at the top:
Step1: Creating the database create a new database called 'users', with 3 fields inside a table. These fields are timestamp, ip and file. Name the table useronline by the way. Now with the form on the PhpMyAdmin page, add the following code:
CODE
CREATE TABLE useronline ( timestamp int(15) DEFAULT '0' NOT NULL, ip varchar(40) NOT NULL, file varchar(100) NOT NULL, PRIMARY KEY (timestamp), KEY ip (ip), KEY file (file) );
Step 2: The PHP Script
CODE
<?php //Put your basic server info here $server = "localhost"; //normally localhost $db_user = "username"; //your MySQL database username $db_pass = "password"; //your MySQL database password $database = "users"; $timeoutseconds = 300;
//this is where PHP gets the time $timestamp = time(); $timeout = $timestamp-$timeoutseconds;
//connect to database //$server = localhost probably //$db_user = your MySQL database username //$db_pass = //your MySQL database password mysql_connect($server, $db_user, $db_pass);
//insert the values $insert = mysql_db_query($database, "INSERT INTO useronline VALUES ('$timestamp','$REMOTE_ADDR','$PHP_SELF')"); if(!($insert)) { print "Useronline Insert Failed > "; }
//delete values when they leave $delete = mysql_db_query($database, "DELETE FROM useronline WHERE timestamp<$timeout"); if(!($delete)) { print "Useronline Delete Failed > "; }
//grab the results $result = mysql_db_query($database, "SELECT DISTINCT ip FROM useronline WHERE file='$PHP_SELF'"); if(!($result)) { print "Useronline Select Error > "; }
//number of rows = the number of people online $user = mysql_num_rows($result);
//spit out the results mysql_close(); if($user == 1) { print("$user user online\n"); } else { print("$user users online\n"); } ?>
I've tried to make that code as simple as possible to understand. The //comment won't affect the script, so you can remove those if you want. The script basically works like this. It receives server information and gets he time. In mySQl it fills in the values of the person online and puts up a message if it failed. When the user leaves mySQL deletes the user and displays a message if it failes.
Hello Sir, i used your code in my site,weldone evrything works well for me...but only that it show only one user online,even if two or more users are online .... else { print("$user users online\n"); } is not functioning can you please hint me on that?