Track your visitors, using PHP

Written by Dennis Pallett

Continued from page 1

Let's use PHP to generate useful overviews for is. The first thing that needs to be done is getrepparttar contents fromrepparttar 105083 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 thatrepparttar 105084 log file is in a variable, it's best if each logline is in a separate variable. We can do this usingrepparttar 105085 explode() function (, 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]); } 

Nowrepparttar 105086 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 gettingrepparttar 105087 number of pageviews. Simply use count() ( onrepparttar 105088 $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 ofrepparttar 105089 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 ( 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 viewrepparttar 105090 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

Dennis Pallett is a young tech writer, with much experience in ASP, PHP and other web technologies. He enjoys writing, and has written several articles and tutorials. To find more of his work, look at his websites:, and

PHP On-The-Fly!

Written by Dennis Pallett

Continued from page 1

</html> Now go to and click onrepparttar button that says 'Update date'. The date will update, withoutrepparttar 105081 page having to be reloaded. This is done withrepparttar 105082 XML HTTP Request object. This example can also be viewed online at

Example 2 Let's try a more advanced example. Inrepparttar 105083 following example,repparttar 105084 visitor can enter two numbers, and they are added up by PHP (and not by JavaScript). This showsrepparttar 105085 true power of PHP andrepparttar 105086 XML HTTP Request Object.

This example usesrepparttar 105087 same script.js as inrepparttar 105088 first example, so you don't need to create this again. First, copyrepparttar 105089 code below and paste it in a file called 'server2.php':


// Get numbers $num1 = intval($_GET['num1']); $num2 = intval($_GET['num2']);

// Return answer echo ($num1 + $num2);


And then, copyrepparttar 105090 code below, and paste it in a file called 'client2.php'. Please note though that you need to editrepparttar 105091 line that says '' torepparttar 105092 correct location of server2.php on your server.
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN"> <html> <head> <title>Example 2</title> <script src="script.js" type="text/javascript"></script>

<script type="text/javascript"> function calc() { num1 = document.getElementById ('num1').value; num2 = document.getElementById ('num2').value;

var element = document.getElementById('answer');"GET", '' + num1 + '&num2=' + num2); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { element.value = xmlhttp.responseText; } } xmlhttp.send(null); } </script> </head>

<body> Userepparttar 105093 below form to add up two numbers. The answer is calculated by a PHP script, and <em>not</em> with JavaScript. What'srepparttar 105094 advantage to this? You can execute server-side scripts (PHP) without having to refreshrepparttar 105095 page.<br /><br />

<input type="text" id="num1" size="3" /> + <input type="text" id="num2" size="3" /> = <input type="text" id="answer" size="5" />

<input type="button" value="Calculate!" OnClick="calc();" /> </body>


When you run this example, you can add up two numbers, using PHP and no reloading at all! If you can't get this example to work, then have a look on to seerepparttar 105096 example online.

Any Disadvantages...? There are only two real disadvantages to this system. First of all, anyone who has JavaScript turned off, or their browser doesn't supportrepparttar 105097 XML HTTP Request Object will not be able to run it. This means you will have to make sure that there is a non-JavaScript version, or make sure all your visitors have JavaScript enabled (e.g. an Intranet application, where you can require JS).

Another disadvantage isrepparttar 105098 fact that it breaks bookmarks. People won't be able to bookmark your pages, if there is any dynamic content in there. But if you're creating a PHP application (and not a PHP website), then bookmarks are probably not very useful anyway.

Conclusion As I've shown you, using two very simple examples, it is entirely possible to execute PHP scripts, without having to refreshrepparttar 105099 page. I suggest you read more aboutrepparttar 105100 XML HTTP Request Object and its capabilities.

The things you can do are limitless. For example, you could create an extremely neat paging system, that doesn't require reloading at all. Or you could create a GUI for your PHP application, which behaves exactly like Windows XP. Just think about it!

Be aware though that JavaScript must be enabled for this to work. Without JavaScript this will be completely useless. So make sure your visitors support JavaScript, or create a non-JavaScript version as well.

Dennis Pallett is a young tech writer, with much experience in ASP, PHP and other web technologies. He enjoys writing, and has written several articles and tutorials. To find more of his work, look at his websites at, and

    <Back to Page 1 © 2005
Terms of Use