Hallo,
ich bin kein Perl-Gott, bringe aber normalerweise ein fertiges Script konfiguriert und zum laufen. Nun habe ich ein Problem mit einem Script, welches Referrer URL`s logt. Das Script schreibt dabei die ermittelten URL's in ein Textfile.
Das Script selbst wird per SSL Aufruf gestartet:
<!--#include virtual="/cgi-bin/referrer/referrer.cgi" -->
Ich schwöre, dass Script schreibt das Logfile (referrer.txt )durch den SSL Aufruf völlig einwandfrei. Trotzdem erscheint im Browser an der Stelle, wo das SSL Aufruf ist eine Fehlermeldung:
[an error occurred while processing this directive]
Vielleicht ist ja ganz am Ende des Scriptes (siehe unten) ein kleiner Bug??
Wenn ich das Script direkt als URL im cgi-bin Verzeichnis in den Browser eingebe kommt ein Error500. Ein einfaches cgi debugger Script konnte keinen Fehler am refferer Script feststellen - und ich bin offensichtlich auch zu blöd dazu.
Weis von Euch vielleicht jemand was da falsch läuft?
Dank im voraus!
Grüße Frank
Hier das Script, wie ich es verwende:
$linkfile="referrer.txt";
$linked_site="Unbekannt";
$ignore="www.your-host.com";
# Set this to whatever address your site is at. This way the script will
# not log any links coming directly from your site.
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/~!/ ~!/g;
$FORM{$name} = $value;
}
open(LINKS,$linkfile)die "$linkfile doesn't look good";
@lines=<LINKS>;
close(LINKS);
foreach $link(@lines)
{
chomp($link);
($linker,$hits)=split(//,$link);
$linker_array{$linker}=$hits;
}
unless (($ENV{'HTTP_REFERER'} eq "") ((($ignore ne "") &&
($ENV{'HTTP_REFERER'}=~/$ignore/))))
{$linked_site=$ENV{'HTTP_REFERER'}}
$linker_array{$linked_site}++;
{@keys=sort {$linker_array{$a} <=> $linker_array{$b}} keys(%linker_array)}
open(LINKS,">$linkfile");
foreach $key(@keys)
{
print LINKS qq~$key$linker_array{$key}\n~;
}
close(LINKS);
1;