#!/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-2001 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($_);} # YOU MUST PUT IN THE FULL PATH TO THESE TWO FILES IF YOU PLACE CLICKTHRU.CGI IN A DIFFERENT DIRECTORY require "/home/a1524/public_html/cgi-bin/affiliates/config.cgi"; require "/home/a1524/public_html/cgi-bin/affiliates/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}"; $id =~ s/\///; ($id,@page) = split (/\//, $id); foreach $item (@page) { $page .= "$item/"; } chop $page; if ($page !~ /http\:\/\//i && $page) { $page = "http://$page"; } } $num_sites = @extra_sites; if ($num_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=>'/'); $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; ########### # 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); } else { print $q->header(-type=>"image/gif"); } open (FILE, "$invis_graphic_path"); flock(FILE, 2); print ; flock(FILE, 8); close (FILE); exit; } ########### # REDIRECT THE CLICK TO THE APPROPRIATE SITE AND SET THE COOKIE ########### if ($setcookie) { if ($page =~ /$page_domain/ig && $use_page eq 1 || $goahead eq "OK") { print $q->redirect(-cookie=>$cookie, -url=>$page); } else { print $q->redirect(-cookie=>$cookie, -url=>$home); } exit; } if ($page =~ /$page_domain/ig && $use_page eq 1 || $goahead eq "OK") { print $q->redirect(-url=>$page); } else { print $q->redirect(-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; }