With this tutorial, you will learn how to build
a simple script that tells you how many visitors are currently visiting
your site. This is a great way to see how your traffic is during
certain times of the day.
How Many Users OnlineStep1: 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:
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
<?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.
|