Christian Kruse: #referer check foreach (@ref) geht nicht?

Beitrag lesen

Hallo,

Das problem ist folgendes,ich möchte in einem weiterleitungs
cgi ein referer check einbinden bevor es auf ein geschütztes
verzeichniss geht(ich weiss geht auch mit htaccess,möcht ich aber nicht).

Sinnfrei.

$ref = $ENV{'HTTP_REFERER'};
@refer = ('http://www.meine.domain.de','http://meine.domain.de');

#referer check
foreach (@refer)
            {
            if ($_ ne $ref) {

print "sorry bad Referer $_ - Access Denied  \n";
    &SendMail(); }  }

Da ist ein Logik-Fehler drin. Besser so:

my $ref   = $ENV{HTTP_REFERER};
@referers = ('http://www.meine.domain.de','http://meine.domain.de');
my $found = 0;

foreach(@referers) {
  if($_ eq $ref) {
    $found = 1;
    break;
  }
}

if($found) {
  print "Content-Type: text/plain\n\nJucheissa!";
}
else {
  print "Content-Type: text/plain\n\nbad guy! You came from $ref.";
  SendMail();
}

Du solltest dir ueberigens mal einen vernuenftigen Formatierungs-Stil
angewoehnen. Dein Quelltext ist grauenhaft.

Gruesse,
 CK