Logging Page Activity
The information in this post has been addressed to various degrees with various focus on various pages of our websites.
Here, I focus tightly on one thing, logging page activity with JavaScript. The JavaScript sends information to a CGI Perl or PHP script. The information is then logged.
The JavaScript sends the information to the server-side script with a call for an image.
This example sends the document's referrer to a logging script named Log.cgi:
<script type="text/javascript" language="JavaScript"><!-- view = new Image(); view.src = '/cgi-bin/Log.cgi?' + document.referrer; //--></script>
The Log.cgi Perl script is in the textarea box below.
Note that a condition of using the software is your agreement to the License Agreement. Also, there is one customization point where the log file is specified. If the log file is to be in the same directory as the Log.cgi script, only the file name needs to be specified. Otherwise, specify the directory location with the name.
#!/usr/bin/perl # Software to log query information and return # an image to the browser. # Version 1.0 # October 30, 2006 # Will Bontrager # https://www.willmaster.com/ # Copyright 2006 Bontrager Connection, LLC # Agree to License Agreement at # https://www.willmaster.com/master/LicenseAgreement.html # before using this software. ####################################### use strict; # Specify log file between the quotation marks: my $LogFileName = "mylogfile.log"; # No other customizations required. sub ConstructDate { my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime; $year += 1900; return "$mday $mon[$mon] $year"; } # sub ConstructDate sub LogTheInformation { open W,">$LogFileName" unless open W,">>$LogFileName"; print W join("\t",@_) . "\n"; close W; } # sub LogTheInformation sub SendImageToBrowser { # Based on module Base64.pm,v 2.16 2001/02/24 06:28:10 gisle local($^W) = 0; my $image = "R0lGODlhBQAFAJH/AP///wAAAMDAwAAAACH5BAEAAAIALAAAAAAFAAUAAAIElI+pWAA7\n"; $image =~ tr|A-Za-z0-9+=/||cd; $image =~ s/=+$//; $image =~ tr|A-Za-z0-9+/| -_|; print "Content-type: image/gif\n\n"; binmode STDOUT; print join '',map(unpack("u",chr(32 + length($_)*3/4) . $_),$image =~ /(.{1,60})/gs); } # sub SendImageToBrowser my $Date = ConstructDate; my $LoggingInfo = $ENV{QUERY_STRING}; $LoggingInfo =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; LogTheInformation $Date,$ENV{REMOTE_ADDR},$LoggingInfo; SendImageToBrowser; # end of file
Will Bontrager