#!/usr/bin/perl # ULTIMATE AFFILIATE - SQL EDITION # VERSION: 2.0 # AUTHOR: Steve Miles # COMPANY: Groundbreak.com # CONTACT: smiles@groundbreak.com # SCRIPT NAME: clickthru.cgi # FUNCTION: Process the affiliate clicks # (c) 1998-present Groundbreak.com # This is not freeware or open source code. # Please visit http://www.groundbreak.com to view the # software license agreement and registration details. # Installation Instructions and User Guide: # http://www.groundbreak.com/support #-------------------------------------------------------------- # DO NOT EDIT BELOW THIS LINE #-------------------------------------------------------------- use CGI; $q = new CGI; use CGI::Carp qw(fatalsToBrowser); foreach ($q->param) {${$_} = $q->param($_); ${$_} =~ s/\;//ig;} # YOU MUST PUT IN THE FULL PATH TO THESE TWO FILES IF YOU PLACE CLICKTHRU.CGI IN A DIFFERENT DIRECTORY require "config.cgi"; require "common.cgi"; &Create_DB_Connection; ########### # GRAB SOME NECESSARY INFO ########### $referer = $q->referer(); $ip = $q->remote_addr(); if ($referer eq "") {$referer = "(unknown)";} $time = time(); ########### # PARSE THE QUERY STRING ########### if ($clickthru_as_a_dir) { $id = "$ENV{PATH_INFO}"; ($junk,$id,$page) = split(/\//, $id, 3); if ($page) { $page =~ s!^(http:)?/*!http://!i; } } if (@extra_sites && $use_page && $page) { foreach $item (@extra_sites) { $i++; if ($page eq $i) { $page = $item; } $item =~ s/www\.//ig; if ($page =~ /$item/ig && $item) { $goahead = "OK"; } } } if ($referer eq "") {$referer = "(unknown)";} if ($campaign) { $referer = "$campaign"; } ########### # ESTABLISH WHETHER THE HIT IS UNIQUE OR NOT ########### $getcookie = $q->cookie(-name=>$cookiename); if (!$getcookie || $write_over_cookie) { $setcookie++;} $cookie = $q->cookie(-name=>$cookiename, -value=>$id, -expires=>$cookietime, -path=>'/', -domain=>"$basedomain"); $unique++; if ($getcookie) { $unique = 0; } if (!$getcookie) { $SQL = "SELECT * FROM ua_hits WHERE Ip LIKE \'$ip\' && Id LIKE \'$id\'"; &Do_SQL; if ($sth->fetchrow_hashref) { $unique = 0; } } ########### # PREPARE COOKIES AND VERIFY THAT THE AFFILIATE ID EXISTS ########### $SQL = "SELECT * FROM users WHERE Username = '$id'"; &Do_SQL; $home =~ s//$id/ig; ########### # DO ALL THE MAJOR HIT, CAMPAIGN, AND REFERRER LOGGING ########### if ($sth->fetchrow_hashref && $id) { &date; $temp1 = $day . "day"; $temp2 = $day . "u_day"; $SQL = "UPDATE ua_primary_hits SET $temp1 = ($temp1 + 1), $temp2 = ($temp2 + $unique), Month_Total = (Month_Total + 1), Month_Unique = (Month_Unique + $unique) WHERE Id = '$id' && Month LIKE '$month' && Year LIKE '$year'";&Do_SQL; if(!$sth->rows) { $SQL = "INSERT INTO ua_primary_hits (Id,Year,Month) VALUES ('$id','$year','$month')";&Do_SQL; $SQL = "UPDATE ua_primary_hits SET $temp1 = ($temp1 + 1), $temp2 = ($temp2 + $unique), Month_Total = (Month_Total + 1), Month_Unique = (Month_Unique + $unique) WHERE Id = '$id' && Month LIKE '$month' && Year LIKE '$year'";&Do_SQL; } if ($write_over_cookie) { $SQL = "UPDATE ua_hits SET Id = '$id' WHERE Ip LIKE '$ip'"; &Do_SQL; } if ($hit_time_on) { $SQL = "INSERT INTO ua_hits (Date,Id,Ip) VALUES ('$time','$id','$ip')"; &Do_SQL; if ($hit_time < $sth->{insertid}) { $SQL = "DELETE FROM ua_hits"; &Do_SQL; } } if ($referers_on) { $SQL = "UPDATE ua_referers SET Total = (Total + 1), Unique_hits = (Unique_hits + $unique) WHERE Id = '$id' && Referer = '$referer'"; &Do_SQL; if(!$sth->rows) { $SQL = "INSERT INTO ua_referers (Id,Referer,Total,Unique_hits) VALUES ('$id','$referer','1','$unique')"; &Do_SQL; }} } ########### # SEND OFF AN IMAGE FOR THOSE WITH REPLICATED WEBSITES ########### if ($click_as_image eq 1) { if (!$getcookie || $write_over_cookie) { print $q->header(-type=>"image/gif", -cookie=>$cookie, -p3p=>"policyref=\"$p3purl\", CP=\"$p3pabbr\""); } else { print $q->header(-type=>"image/gif"); } open (FILE, "$invis_graphic_path"); flock(FILE, 2); print ; flock(FILE, 8); close (FILE); $sth->finish; $dbh->disconnect; exit; } ########### # REDIRECT THE CLICK TO THE APPROPRIATE SITE AND SET THE COOKIE ########### if ($windows) { if ($setcookie) { if ($page =~ /$page_domain/ig && $use_page eq 1 || $goahead eq "OK") { print $q->header(-cookie=>$cookie, -p3p=>"policyref=\"$p3purl\", CP=\"$p3pabbr\""); print ""; } else { print $q->header(-cookie=>$cookie, -p3p=>"policyref=\"$p3purl\", CP=\"$p3pabbr\""); print ""; } } else { if ($page =~ /$page_domain/ig && $use_page eq 1 || $goahead eq "OK") { print $q->header(-p3p=>"policyref=\"$p3purl\", CP=\"$p3pabbr\""); print ""; } else { print $q->header(-p3p=>"policyref=\"$p3purl\", CP=\"$p3pabbr\""); print ""; } }} else { if ($setcookie) { if ($page =~ /$page_domain/ig && $use_page eq 1 || $goahead eq "OK") { print $q->redirect(-cookie=>$cookie, -p3p=>"policyref=$p3purl, CP=$p3pabbr", -url=>$page); } else { print $q->redirect(-cookie=>$cookie, -p3p=>"policyref=$p3purl, CP=$p3pabbr", -url=>$home); } } else { if ($page =~ /$page_domain/ig && $use_page eq 1 || $goahead eq "OK") { print $q->redirect(-p3p=>"policyref=$p3purl, CP=$p3pabbr", -url=>$page); } else { print $q->redirect(-p3p=>"policyref=$p3purl, CP=$p3pabbr", -url=>$home); } }} $sth->finish; $dbh->disconnect; exit; sub date { ($sec, $min, $hour, $day, $mon, $year, $dweek, $dyear, $daylight) = localtime($time); $month = $mon + 1; $year = $year + 1900; }