max: %3F funktioniert nicht

Beitrag lesen

Ok,
das ist das Script von Wolfgang Wiese - hab mir schon gedacht, dass es daran liegt. Damit sind meine Möglichkeiten dann erschöpft. Meine Perl-Kenntnisse beschränkgen sich auf "Downloaden" und "Pfade anpassen"

Here it comes:

$LOCK_SH = 1;
$LOCK_EX = 2;
$LOCK_NB = 4;
$LOCK_UN = 8;

$notignore=1;

if ($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; }
 else { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});  }

if (!($buffer)) {$buffer=substr($ENV{'PATH_INFO'},1,length($ENV{'PATH_INFO'}));}
 if (!($buffer)) {$buffer=@ARGV; }

$buffer =~ tr/+//;
 $buffer =~ tr/ //;
 $buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
 $buffer =~ s/[\x00-\x20<>|;()$^+!^[]?"'`]//g;

if (!($buffer)) {&Redirect($ALTLINK);}

for ($i=0;$i<=$#ignore_host;$i++) {
  if ($ignore_host[$i] eq $ENV{'REMOTE_ADDR'}) {$notignore=0;}
 }
 if ($notignore) {&WriteLog;}
 &Redirect($buffer);

exit(0);
#################### Subroutines ########################
sub WriteLog {
 my ($i)=0;
 my ($oldlink)=0;
 my ($name,$version);

if (-r $LOGFILE) {
  open(f1,"$LOGFILE") || &Redirect($ALTLINK);
   while(<f1>) {
    chop($_);
    $clickinfo[$i++]=$_;
    if ($_ =~ /^$buffer/) {
     $oldlink=1;
    }
   }
  close f1;
 }

$oldlink=0;

if ($oldlink==0) {
  open(f1,">>$LOGFILE") || &Redirect($ALTLINK);
   flock(f1,$LOCK_EX);
   seek(f1, 0, 2);
   print f1 "$buffer, 1\n";
   flock(f1,$LOCK_UN);
  close f1;
 } else {
  open(f1,">$LOGFILE") || &Redirect($ALTLINK);
   flock(f1,$LOCK_EX);
   seek(f1, 0, 2);
   for ($i=0;$i<=$#clickinfo;$i++) {
    if ($clickinfo[$i] =~ /^$buffer/) {
     ($page,$hit)=split(/, /,$clickinfo[$i]);
     $hit++;
     print f1 "$page, $hit\n";
    } else {
     print f1 "$clickinfo[$i]\n";
    }
   }
   flock(f1,$LOCK_UN);
  close f1;
 }
}
################################################################################
sub Redirect {
 my($url)=@_;
 print "Status: 302 Found\n";
 print "Location: $url\n";
 print "URI: <$url>\n";
 print "Content-type: text/html\r\n\r\n";
 exit(1);
}
################################################################################