|
Home::CGI
Track your visitors, using PHP
Author : Dennis Pallett
There are many different traffic analysis tools, ranging from
simple counters to complete traffic analyzers. Although there
are some free ones, most of them come with a price tag. Why not
do it yourself? With PHP, you can easily create a log file
within minutes. In this article I will show you how!
Getting the information The most important part
is getting the information from your visitor. Thankfully, this
is extremely easy to do in PHP (or any other scripting language
for that matter). PHP has a special global variable called
$_SERVER which contains several environment variables, including
information about your visitor. To get all the information you
want, simply use the following code: // Getting the
information $ipaddress = $_SERVER['REMOTE_ADDR']; $page =
"http://{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF']}"; $page .=
iif(!empty($_SERVER['QUERY_STRING']),
"?{$_SERVER['QUERY_STRING']}", ""); $referrer =
$_SERVER['HTTP_REFERER']; $datetime = mktime(); $useragent =
$_SERVER['HTTP_USER_AGENT']; $remotehost =
@getHostByAddr($ipaddress); As you can see the majority
of information comes from the $_SERVER variable. The mktime()
(http://nl2.php.net/mktime) and getHostByAddr()
(http://nl2.php.net/manual/en/function.gethostbyaddr.php)
functions are used to get additional information about the
visitor.
Note: I used a function in the above example called iif(). You
can get this function at http://www.phpit.ne
t/code/iif-function.
Logging the information Now that you have all
the information you need, it must be written to a log file so
you can later look at it, and create useful graphs and charts.
To do this you need a few simple PHP function, like fopen
(http://www.php.net/fopen) and fwrite
(http://www.php.net/fwrite).
The below code will first create a complete line out of all the
information. Then it will open the log file in "Append" mode,
and if it doesn't exist yet, create it.
If no errors have occurred, it will write the new logline to the
log file, at the bottom, and finally close the log file again.
// Create log line $logline = $ipaddress . '|' . $referrer
. '|' . $datetime . '|' . $useragent . '|' . $remotehost . '|' .
$page . " ";
// Write to log file: $logfile =
'/some/path/to/your/logfile.txt';
// Open the log file in "Append" mode if (!$handle =
fopen($logfile, 'a+')) { die("Failed to open log file"); }
// Write $logline to our logfile. if (fwrite($handle, $logline)
=== FALSE) { die("Failed to write to log file"); }
fclose($handle); Now you've got a fully function logging
module. To start tracking visitors on your website simply
include the logging module into your pages with the include()
function (http://www.php.net/include): include
('log.php'); Okay, now I want to view my log
file After a while you'll probably want to view your
log file. You can easily do so by simply using a standard text
editor (like Notepad on Windows) to open the log file, but this
is far from desired, because it's in a hard-to-read format.
Let's use PHP to generate useful overviews for is. The first
thing that needs to be done is get the contents from the log
file in a variable, like so: // Open log file $logfile =
"G:projectsphpitcontentrack your visitors using phplog.txt";
if (file_exists($logfile)) {
$handle = fopen($logfile, "r"); $log = fread($handle,
filesize($logfile)); fclose($handle); } else { die ("The log
file doesn't exist!"); } Now that the log file is in a
variable, it's best if each logline is in a separate variable.
We can do this using the explode() function
(http://www.php.net/explode), like so: // Seperate each
logline $log = explode(" ", trim($log)); After that it
may be useful to get each part of each logline in a separate
variable. This can be done by looping through each logline, and
using explode again: // Seperate each part in each logline
for ($i = 0; $i < count($log); $i++) { $log[$i] =
trim($log[$i]); $log[$i] = explode('|', $log[$i]); }
Now the complete log file has been parsed, and we're ready to
start generating some interesting stuff.
The first thing that is very easy to do is getting the number of
pageviews. Simply use count() (http://www.phpit.net/count) on
the $log array, and there you have it; echo count($log) .
" people have visited this website."; You can also
generate a complete overview of your log file, using a simple
foreach loop and tables. For example: // Show a table of
the logfile echo '<table>'; echo '<th>IP
Address</th>'; echo '<th>Referrer</th>'; echo
'<th>Date</th>'; echo
'<th>Useragent</th>'; echo '<th>Remote
Host</th>';
foreach ($log as $logline) { echo '<tr>';
echo '<td>' . $logline['0'] . '</td>'; echo
'<td>' . urldecode($logline['1']) . '</td>'; echo
'<td>' . date('d/m/Y', $logline['2']) . '</td>';
echo '<td>' . $logline['3'] . '</td>'; echo
'<td>' . $logline['4'] . '</td>';
echo '</tr>';
}
echo '</table>';
You can also use custom functions to filter out search engines
and crawlers. Or create graphs using PHP/SWF Charts
(http://www.maani.us/charts/index.php). The possibilities are
endless, and you can do all kinds of things!
In Conclusion... In this article I have shown
you have to create a logging module for your own PHP website,
using nothing more than PHP and its built-in functions. To view
the log file you need to parse it using PHP, and then display it
in whatever way you like. It is up to you to create a kick-ass
traffic analyzer.
If you still prefer to use a pre-built traffic analyzer, have a
look at http://www.hotscripts.com.
Spam emails More free articles Related articles
|
More related feeds |
The Mind Portal...Tracking and Training with It Aside from that, there may be some very interesting things to consider when using something like this to train martial arts. You can easily make a code to keep track of your training, making it easier to set new goals and see your ...Track Wordpress signups with Google Analytics As most people know, Google Analytics is a very powerful tool to track visitors, page views and general behavior of your website audience. However as people get more familiar with Analytics they experiment more and also learn the ... Yahoo!'s Political Dashboard Helps You Track the Race for the ... The projection window displays the results of the election using current polling data from each state and tracks current poll averages across the country. You can track market information in each state, and if there isn't any polling ... XBerry Live: Keep Track Of Your XBox Live Friends ForÂ~all you gamers out there, thanks to BlackBerry Forums member Jxlarrea, you now have an application designed to track your Â~XBOX Live friends gamers status and activity. We all know our love for gadgets doesn’t stop at the ... Stumped! How do I change this? http://www.tomjoolery.com.au//index.php?main_page=login For uniformity's sake, I would like the following pieces of text on this page to be the same font and font size as the rest of the text on the page: Note: Your "Visitors Cart" ... Post Your Ads On My Forum Download these free professional designed Marketing Web Graphics for your websites. You will receive With these graphics, you will be able to gain trust in your visitors to your website, and increase conversions, to increase your ... Still Trying to Understand Twitter? Think of Post-it Notes... These messages are the blue notes on your wall. The Yellow Notes. twitterreplies.jpg Another nice thing about Twitter is that it keeps track of the messages people write to or about you. Twitter users can address a specific person in ... 50 Tools to Help you Blogging Searchamabob: This tool facilitates your website visitors to search using Google or any other search engine that’s added along to this cool widget. 48. XML sitemaps: Placing this tool will help search engine crawlers to get to your ... MyThings Raises $5 Million to Help you Organize Your Stuff If you ever wished for a central place to keep track of your online purchases and to store all those email receipts, MyThings might just be what you are looking for. The London-based company just announced a $5 million Series B round. ... An Unexpected Benefit of Using an IoC Container How do you keep track of it throughout it's duration? Who is responsible for it's lifecycle? All valid questions, and all difficult to handle manually. But if I'm using an IoC container, I can let the container manage the life cycle for ...
|
|
|