PHPBuilder - Where did they go today?

RSS Twitter

Where did they go today?

by: Sebastian Moericke-Kreutz
July 30, 2000

Have you ever wondered where people go when they leave your site? With php3 it is easy to trace this. Sure, several solutions of redirect-cgi's exist, but why bother with another language when you can keep it straight to php3 and make it more comfortable?
My setting for writing this from scratch was a site where I had multiple pages with identical links in a part of them, but I'd wanted to know the use of the external links in detail: Who left where from which page and when. So here is how it works:
When you read the documentation about php3 in detail, you may have come across this kind of one-liner: <?php Header("Location:"); exit; ?> You find it in Section XIV. It uses a HTTP redirect command to make the users browser access a new location. This is a good example how simple things in PHP3 can be: We will expand it, so that we make a suitable tool for the curious ;).
First we make targeting more flexible, it is the 'where'. This one is easy, because you just add a parameter to the URL of the redirector page. I'll call it <?php '$u_target' ?> . (u_ stands for URI/URL, this is a personal way to determine where the variable belongs to that I am using. Others: db_ is for database , p_ for page , f_ for function and so on.)
Then we want to record from 'which' page the link was activated. Since the referrer-information is sometimes filtered out by proxies, browsers and firewalls, we will use the additional variable <?php '$u_referrer' ?> for this purpose. You can use simple keywords like 'homepage', the name of the page example.html or the full address "http://...". It doesn't really matter, but keywords are better to understand on first look. When you skip this parameter, <?php $HTTP_REFERER ?> is used automatically. Note that if it doesn't exist either, <?php '$u_referrer' ?> will be set to 'none'.
We will determine the "who" by using server-variables. We'll take <?php $REMOTE_ADDR ?> address for this purpose, since Apache and IIS deliver it in nearly 90% of all installations ;). <?php $REMOTE_HOST ?> is better but since DNS-lookup is switched off sometimes, you'll have to try out on your server yourself. (Use <?php phpinfo() ?> for this purpose. It's tip I got from Tim and others which lead also to this script. Thanks ;)
'When' is easy: <?php time() ?> is all we need.
Logging the information gathered to a database is the method of choice. Since the data-structure is simple and flat, you should be able to use any kind of solutions - even plain text files will do it. Since MySQL is nice for this job, we'll take it for our purpose.
Since this article focuses on redirecting, I will keep the part of information exchange with the database brief. You'll find more information on this topic here in and on the web.
Here is the SQL-Command for creating the table in MySQL:
# Definition
# Table structure for table \'redirect\'
CREATE TABLE redirect (
  target varchar(80) DEFAULT \'no target\' NOT NULL,
  referrer varchar(80) DEFAULT \'none\' NOT NULL,
  client varchar(40) DEFAULT \'no client\' NOT NULL,
  timeused datetime DEFAULT \'0000-00-00 00:00:00\' NOT NULL

Next Page »

Comment and Contribute

Your comment has been submitted and is pending approval.

Sebastian Moericke-Kreutz



(Maximum characters: 1200). You have characters left.