Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 1999 Teil von März

SELFHTML Forumsarchiv
Perl: if-Abfrage

Informationsseite
  1. Seite (PERL) Perl: if-Abfrage von Daniel, 28. 03. 1999, 19:36
nach unten

Perl: if-Abfrage

Die folgende Nachricht zum Thema stammt von: Daniel, 28. 03. 1999, 19:36

Hallo Leute,

ich hätte mal eine Frage bezüglich Perl. Ich habe einen Formular auf einer Web-Seite aufgebaut. Je nachdem was eingegeben wird, erfolgt eine Weiterleitung zu einer bestimmten Seite. Leider klappt es nicht wie ich es möchte. Es wird immer die Seite im if-Rumpf geladen, und das auch wenn die Formular-Eingaben mit dem Inhalt des Zeilen-Arrays übereinstimmt. Vielleicht könnt ihr mir sagen, was ich da falsch mache, würde mich freuen.

Daniel

Anhang: Source-Code

#!/usr/bin/perl

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

@Formularfelder = split (/&/, $Daten);
foreach $Feld (@Formularfelder)
{
($name, $value) = split(/=/, $Feld);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9] [a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$Formular[$i] = $name;
$i = $i + 1;
$Formular[$i] = $value;
$i = $i + 1;
}

@Zeilen =("");
open(PASSDAT, "<edit.txt");
while(<PASSDAT>)
{
push(@Zeilen,$_);
}
close(PASSDAT);

print $Zeilen[0];

if (($Formular[1] eq $Zeilen[1]) && ($Formular[3] eq $Zeilen[2]))
{
print "Location: ../ml/index.html\n\n";
}
else
{
print "Location: ../fl/index.html\n\n";
}

nach obennach unten

Perl: if-Abfrage

Die folgende Nachricht zum Thema stammt von: Frank Schönmann, 28. 03. 1999, 19:45

hi!

Liegt vermutlich an den Zeilenumbrüchen, die am Ende jeder Zeile hängen, aber in den Formularfeldern nicht vorkommen. Änder dein Skript mal folgendermaßen ab:

»» open(PASSDAT, "<edit.txt");
»» while(<PASSDAT>)
»» {
      chomp;
»»   push(@Zeilen,$_);
»» }
»» close(PASSDAT);

Dann sollte es funktionieren, wenn ich mich nicht irre.

bye, Frank!

nach obennach unten

Perl: if-Abfrage

Die folgende Nachricht zum Thema stammt von: Cheatah, 28. 03. 1999, 20:08

Hi,

die Reihenfolge der Parameter muß nicht unbedingt mit der der Formularfelder übereinstimmen. Schreibe also statt:

»»  $Formular[$i] = $name;
»»  $i = $i + 1;
»»  $Formular[$i] = $value;
»»  $i = $i + 1;

einfach:

$Formular{$name} = $value;

und frage dann statt

»» if (($Formular[1] eq $Zeilen[1]) && ($Formular[3] eq $Zeilen[2]))

if ($Formular{'feldname'} eq $Zeilen[1] && $Formular{'feldname'} eq $Zeilen[2]) # 'feldname' jeweils ersetzen

Zusammen mit chomp() sollte es dann gehen. Noch eine Kleinigkeit:

»»  print "Location: ../ml/index.html\n\n";
»»  print "Location: ../fl/index.html\n\n";

Möööp! Herzlichen Glückwunsch. Sie haben sich zur Reinigung des Aufzugs entschlossen :-)
IMMER eine absolute URI angeben, also:

print "Location: http://complete.path.to/your/ml/index.html\n\n";

Eine relative Angabe wird zwar meist korrekt interpretiert, ist aber trotzdem falsch.

Cheatah

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 1999 Teil von März

© 1998-2006 Seite Impressum, Software: Classic Forum