#!/usr/bin/perl

use strict;
use DBI;

my %FORM = ();
my @pairs = ();
my $buffer = '';
my $script_url = $ENV{'SCRIPT_NAME'};

my $dsn = 'DBI:mysql:de:localhost';                    # DBI/Modul/Datenbank/Host

# Variablen fuer Datendankabfragen und -eintraege
my ($dbh,$sql,$row,$sth,$id);
my ($name,$count,$mon,$year);
my ($url,$uname,$aktmon,$aktyear,$dummy);

($dummy,$dummy,$dummy,$dummy,$aktmon,$aktyear,$dummy,$dummy,$dummy) = gmtime(time);
$aktyear = $aktyear + 1900;
$aktmon++;

# Formulardaten auswerten - wie schon oft gezeigt; es wird nur GET beruecksichtigt
@pairs = split(/&/, $ENV{'QUERY_STRING'});
foreach my $pair (@pairs)
  {
  my ($name, $value) = split(/=/, $pair);
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $FORM{$name} = $value;
  }
$url = $FORM{'url'};
$uname = $FORM{'cnt'};
# Nur Buchstaben und Zahlen bei 'cnt'
$uname =~ s/[^a-zA-Z0-9]//g;

# Datenbank-Verbindung aufbauen
$dbh = DBI->connect($dsn, "debuser", "dbpass",
                    {RaiseError => 1, AutoCommit => 1});

# Daten abfragen fuer den Namen sowie aktuellen Monat und aktuelles Jahr
$sql = "SELECT * FROM AdKlick WHERE Name='" . $uname . "' AND Mon='" .
       $aktmon . "' AND Year='" . $aktyear . "';";
$sth = $dbh->prepare($sql);
$sth->execute();
($id,$name,$count,$mon,$year) = $sth->fetchrow_array();

# Wenn Datensatz vorhanden, Counter erhoehen
if ($id > 0)
  {
  $count++;
  $sql = "UPDATE AdKlick SET Count='" . $count . "' WHERE Id='" . $id . "';";
  $dbh->do($sql);
  }
# in allen anderen Faellen: Neuanlage
else
  {
  $sql ="INSERT INTO AdKlick (Name,Count,Mon,Year) VALUES(" .
        "'" . $uname . "', '1', '" . $aktmon . "', '" . $aktyear . "');";
  $dbh->do($sql);
  } 
# und per Umleitung zur Ziel-URL wechseln
print "Location: $url\n\n";
