Chrisman: Reloadsperre - Script funktioniert nicht

Beitrag lesen

Hallo Leute,
ich habe für mein Bannerwerbesystem versucht eine Reloadsperre zu programmieren, die auch nur so gehen kann. Also bitte keine allgemeinen Reloadsperren posten, die man hier irgendwo in älteren Beiträgen findet, denn diese habe ich auch schon gesichtet gehabt ;)

Hier der extra von mir für Euch kommentierte Quellcode:

#!/usr/bin/perl

URL der Form http://www.blabla.com/cgi-bin/show.pl?id=500_a

wird gesplittet

$query = $ENV{'QUERY_STRING'};
@data = split(/&/, $query);
for (@data)
  {
    ($key, $value) = split /=/;
    $value =~ s/%([a-fA-F0-9]{2})/pack("C", hex($1))/eg;
    $param{$key} = $value;
  }

$userinfo = $param{'id'};
($id,$subcode) = split (/\_/, $userinfo);

In $id sollte sich nun 500 befinden und in $subcode a.

open (IPDATEI, "<user/$id.ipdatei.txt");
@ipdatei = <IPDATEI>;
close (IPDATEI);

Die Datei 500.ipdatei.txt wurde geöffnet und jede Zeile

wurde in @ipdatei eingelesen.

$ip = $ENV{'HTTP_CLIENT_IP'};
if ($ip eq "") { $ip = $ENV{'REMOTE_ADDR'}; }

Aktuelle IP des aufrufenden Users wurde erkannt.

foreach $line (@ipdatei)
{
($subcode_ipdatei,$wahlid_ipdatei,$ip_ipdatei) = split (/,/, $line);

Jede Zeile von @ipdatei wird gesplittet. Die Datei 500.ipdatei.txt ist

folgendermaßen aufgebaut:

Jede Zeile: letztaufgerufenerSubcode,letztgezeigterUser,IP

if ($subcode_ipdatei eq $subcode && $ip_ipdatei eq $ip)

Hier wird überprüft, ob der alte Subcode mit dem aktuellen Subcode

übereinstimmt und ob die alte IP mit der aktuellen IP übereinstimmt.

Wenn ja, dann soll letztgezeigterUser nochmal eingeblendet werden.

{

... Öffne Datei und zeige $wahlid_ipdatei (letztgezeigterUser)

last;
  }

else
  {

... mach dies und das

}

}

Er bringt immer einen Internal Server Error, wenn der Code mit dem Browser aufgerufen wird. Der Perl-Compiler unter Telnet zeigt allerdings keine Fehler an, was wohl daran liegt, dass ich keine ID übergeben kann. Die Stellen, die ich hier nicht gelistet habe, sind auf jeden Fall richtig, es muss also im oberen Code ein Fehler vorkommen, ich finde ihn nur nicht, bin am Verzweifeln :(
Wer kann mir helfen?

Chrisman