#!/usr/bin/perl ################################################################ # This script is Copyright 1999 Maxime Grandchamp # # I have changed the output to be NCSA compliant # # The script will look for the referer as the argument 'ref' # # passed on by a JavaScript command # # Maxime Grandchamp - http://Marketing-Internet.com # ################################################################ $logfile = "/home/marketin/public_html/log/stats.txt"; $ip = $ENV{'REMOTE_ADDR'}; $browser = $ENV{'HTTP_USER_AGENT'}; @digits = split (/\./, $ip); $address = pack ("C4", @digits); $host = gethostbyaddr ($address, 2); if ($host eq '') {$host=$ip}; &parse_query; $here =$ENV{'HTTP_REFERER'}; $here =~ s/http\:\/\///g; $here = substr($here,index($here,'/')); $referer=$query{'ref'}; $referer=~ s/%3A/:/g; $referer=~ s/ //g; $referer=~ s/\"//g; if ($referer eq '') {$referer='-'}; &write_file; &show_img; ################################################ # Parse the query then clean it up for our uses ################################################ sub parse_query { @query_strings = split("&", $ENV{"QUERY_STRING"}); foreach $q (@query_strings) { ($attr, $val) = split("=", $q); $query{$attr} = $query{$attr}." ".$val; } } ################################################ # Write information to the log ################################################ sub write_file { if (! (-f "$logfile")) { open (LOG, ">$logfile"); close LOG; } &date; open (LOG,">>$logfile") || die "Can't write to log file"; print LOG "$host $ip - [$day/$month/$year:$time +0000] \"GET $here HTTP/1.1\" 200 0 \"$referer\" \"$browser\"\n"; close LOG; } ################################################# # Get date and show it in mm/dd/yy format ################################################# sub date { ($day,$month,$day,$time,$year) = split(/\s+/,gmtime(time),5); if ($day < 10) { $day = "0$day" }; } ################################################# # Subroutine to return a 1-pixel transparent gif ################################################# sub show_img { $! = 1; $| = 1; print "Content-type: image/gif\n\nGIF89a\1\0\1\0\200\0\0\0\0\0\0\0\0!\371\4\1\0\0\0\0,\0\0\0\0\1\0\1\0\0\2\2D\1\0\n"; }