Nico: Perl

Hallo!

Ich habe eine Frage zu Perl:
Ich will eine Account-basierte Passwort-Abfrage machen.
Also dass Name und Passwort in einer dat-Datei
mit dem Trennungszeichen ; gespeiechert werden.

Z.B. Inhalt der Datei:
Nico;cool

Das Erste ist der Username, das zweite das dazugehörige Passwort und das in mehrfacher Ausführung, also:

Nico;cool
Hans;Franz
Nix;nix

Wie kann ich in einem Perl-Script es so anstellen, dass über ein Formular das Passwort und der Username verlangt werden, abgeschickt werden, an den Script übergeben werden und dann aus der Dat-Datei der Account gecheckt wird und das dazugehörige Passwort. Und Wenn beides richtig ist, dass dann eine positive Meldung kommt, in Form eines print-Befehls also, und wenn eines von beiden oder beide nicht stimmen, dass dann eine Fehlermeldung kommt?

Ich habe es schon mit folgendem versucht, aber keinen Erfolg gehabt:

open(DAT,"<dat.dat");
@dat = <DAT>;
close(DAT);

foreach $element (@dat)
{
($name, $pwd) = split(/;/, $element);
}

if(eingegebener Wert eq $name && eingegebener wert eq $pwd)
{
posititv;
}

else{
negativ
}

Wer kann mich verbessern oder mir sagen, wie es richtig ist?

  1. Ich habe es schon mit folgendem versucht, aber keinen Erfolg gehabt:

    open(DAT,"<dat.dat");
    @dat = <DAT>;
    close(DAT);

    foreach $element (@dat)
    {
    ($name, $pwd) = split(/;/, $element);
    }

    if(eingegebener Wert eq $name && eingegebener wert eq $pwd)
    {
    posititv;
    }

    else{
    negativ
    }

    Ob das System, das du verwendest um die Richtigkeit zu prüfen, einen Fehler hat kann ich dir auf die Schnelle nicht sagen. Wenn dies allerdings dein orginal Quellcode ist, fehlt nach negativ ein ";". Dies könnte schon der ganze Fehler sein.

    Gruß
      Stefan

    1. Ich habe es schon mit folgendem versucht, aber keinen Erfolg gehabt:

      open(DAT,"<dat.dat");

      ... und

      der Pfeil im 2. Argument der open - Funktion muss andersherum zeigen, wenn die Datei geschrieben werden soll:
      open(DAT,">dat.dat");

      Viele Grüße
      Rolf

  2. Ich habe es schon mit folgendem versucht, aber keinen Erfolg gehabt:

    open(DAT,"<dat.dat");
    @dat = <DAT>;
    close(DAT);

    foreach $element (@dat)
    {
    ($name, $pwd) = split(/;/, $element);
    }

    ##      ^^^  Hier ist die for-Schleife zu Ende!! ##

    if(eingegebener Wert eq $name && eingegebener wert eq $pwd)
    {
    posititv;
    }
    Wer kann mich verbessern oder mir sagen, wie es richtig ist?

    Hallo Stefan!

    In Deinem Skript-Auszug liest Du in einer for-Schleife
    wiederholt Daten aus @dat in $name und $pwd.
    Jedoch werden $name und $pwd nicht weiterverwertet sondern
    im naechsten Schleifendurchlauf einfach
    vom naechsten Datensatz ueberschrieben.
    Mit der if-Abfrage, die erst hinter der Schleife erfolgt,
    wird also hoechstens der letzte Datensatz abgefragt.
    Mit anderen Worten: Die if-Abfrage gehoert IN die
    for-Schleife hinein.

    Gruesse,

    Andreas Bierhals

  3. Hallo!

    Ich habe eine Frage zu Perl:
    Ich will eine Account-basierte Passwort-Abfrage machen.
    Also dass Name und Passwort in einer dat-Datei
    mit dem Trennungszeichen ; gespeiechert werden.

    Z.B. Inhalt der Datei:
    Nico;cool

    Das Erste ist der Username, das zweite das dazugehörige Passwort und das in mehrfacher Ausführung, also:

    Nico;cool
    Hans;Franz
    Nix;nix

    Wie kann ich in einem Perl-Script es so anstellen, dass über ein Formular das Passwort und der Username verlangt werden, abgeschickt werden, an den Script übergeben werden und dann aus der Dat-Datei der Account gecheckt wird und das dazugehörige Passwort. Und Wenn beides richtig ist, dass dann eine positive Meldung kommt, in Form eines print-Befehls also, und wenn eines von beiden oder beide nicht stimmen, dass dann eine Fehlermeldung kommt?

    Ich habe es schon mit folgendem versucht, aber keinen Erfolg gehabt:

    open(DAT,"<dat.dat");
    @dat = <DAT>;
    close(DAT);

    foreach $element (@dat)
    {
    ($name, $pwd) = split(/;/, $element);
    }

    if(eingegebener Wert eq $name && eingegebener wert eq $pwd)
    {
    posititv;
    }

    else{
    negativ
    }

    Wer kann mich verbessern oder mir sagen, wie es richtig ist?