<?php
/*
For database `emailstats`
CREATE TABLE `emailstats`.`logs` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`ip` TEXT NOT NULL ,
`campaign` INT NOT NULL ,
`opens` INT NOT NULL ,
`clicks` INT NOT NULL
) ENGINE = MYISAM ;
CREATE TABLE `emailstats`.`campaigns` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`url` TEXT NOT NULL
) ENGINE = MYISAM ;
*/
$dbhost = "localhost";
$dbuser = "username";
$dbpass = "password";
$dbname = "emailstats";
mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);
switch($_GET['act']){
case "open":
$ip = $_SERVER['REMOTE_ADDR'];
$campaign = (int)$_GET['campaign'];
if(mysql_num_rows(mysql_query("SELECT * FROM logs WHERE ip='$ip' AND campaign='$campaign'"))==0){
mysql_query("INSERT INTO logs (ip, campaign, opens, clicks) VALUES ('$ip', '$campaign', '1', '0')");
} else {
$opens = mysql_query("SELECT * FROM logs WHERE ip='$ip' AND campaign='$campaign'");
$opens = mysql_fetch_assoc($opens);
$new_opens = $opens['opens'] + 1;
$rowid = $opens['id'];
mysql_query("UPDATE logs SET opens='$new_opens' WHERE id='$rowid'") or die(mysql_error());
}
break;
case "click":
$ip = $_SERVER['REMOTE_ADDR'];
$campaign = (int)$_GET['campaign'];
if(mysql_num_rows(mysql_query("SELECT * FROM logs WHERE ip='$ip' AND campaign='$campaign'"))==0){
mysql_query("INSERT INTO logs (ip, campaign, opens, clicks) VALUES ('$ip', '$campaign', '0', '1')");
} else {
$clicks = mysql_query("SELECT * FROM logs WHERE ip='$ip' AND campaign='$campaign'");
$clicks = mysql_fetch_assoc($clicks);
$new_clicks = $clicks['clicks'] + 1;
$rowid = $clicks['id'];
mysql_query("UPDATE logs SET clicks='$new_clicks' WHERE id='$rowid'");
$camp = mysql_query("SELECT * FROM campaigns WHERE id='$campaign'");
$camp = mysql_fetch_assoc($camp);
$camp = $camp['url'];
}
header("Location: $camp");
break;
default:
echo "Internal Server Error. Logged.";
break;
}
?>