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?
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:
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:
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 ;).
one-liner:
<?php Header("Location: http://www.php.net"); 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
(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.)
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
‘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,
Note that if it doesn’t exist either,
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
this purpose, since Apache and IIS deliver it in nearly 90% of all installations ;).
is better but since DNS-lookup is switched off sometimes, you’ll have to try out on your server
yourself. (Use
which lead also to this script. Thanks 😉
<?php $REMOTE_ADDR ?>
address forthis 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 otherswhich 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.
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 phpbuilder.com and on the web.
database brief. You’ll find more information on this topic here in phpbuilder.com 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 );