Holger: User-Login

Hallo,

Ich habe folgendes Problem:

Ich möchte eines User-Login in meine HP einbauen.

Die Passwörter sind in einer speraten Datei gespeichert.
z.B. Inhalt der passwort Datei

Ichtest
johnjohn
dutest2

Nun habe ich mir gedacht, ich ließ das ganze ein,
trenn diese.

foreach $EINTRG(@passwort)
                 {
                 ($user,$pass) = split(//,$EINTRAG);

und mach dann meine Abfrage so:

if($pass eq $pass_jetzt && $user eq $user_jetzt)
                 {
                  &login;
                  }
            elsif($user ne $user_jetzt)
              {
              &falsch_user;
              }
           elsif($pass ne $pass_jetzt)
             {
             &falsch_pass;
             }
    }
&falsch;

exit;

Nur Leider Das Problem, auch wenn nur das Passwort, bzw. nur
der User stimmt wird eingeloggt.
Habe ich die if-Anweißung falsch verstanden, oder Funktioniert
das einfach nicht so.

Für euere Antwort Bedanke ich mich jetzt Schon.

Gruss Holger

  1. Hi,

    Nur Leider Das Problem, auch wenn nur das Passwort, bzw. nur
    der User stimmt wird eingeloggt.

    vielleicht solltest Du statt <input> einfach <textarea> benutzen. Damit läßt sich auch der Zeilenumbruch übertragen, der am Ende eines jeden Passwortes hängt.

    Oder Du entfernst einfach eben diesen mit chomp.

    Cheatah

  2. Die Passwörter sind in einer speraten Datei gespeichert.
    z.B. Inhalt der passwort Datei

    Ichtest
    johnjohn
    dutest2

    Du solltest die Passwoerter besser mit crypt verschluesselt ablegen, statt im Klartext.

    Nun habe ich mir gedacht, ich ließ das ganze ein,
    trenn diese.

    »»  foreach $EINTRG(@passwort)

    {
                     ($user,$pass) = split(//,$EINTRAG);

    und mach dann meine Abfrage so:

    »»  if($pass eq $pass_jetzt && $user eq $user_jetzt)

    {
                      &login;
                      }
                elsif($user ne $user_jetzt)
                  {
                  &falsch_user;
                  }
               elsif($pass ne $pass_jetzt)
                 {
                 &falsch_pass;
                 }
        }
    &falsch;

    exit;

    Nur Leider Das Problem, auch wenn nur das Passwort, bzw. nur
    der User stimmt wird eingeloggt.
    Habe ich die if-Anweißung falsch verstanden, oder Funktioniert
    das einfach nicht so.

    Das ist alles nicht so guenstig. Am besten waere es, wenn du die "basic authentication" deines Webservers einsetzt. Nur wenn das aus irgendwelchen Gruenden nicht funktioniert oder sinnvoll ist, solltest Du etwas eigenes bauen, vielleicht so:

    my $login_ok;
    for (@passwort);
      chomp;              # nur zur Sicherheit
      my ($user, $passwd) = split //;
      $login_ok = 1 if ($user eq $user_jetzt and $pass_jetzt eq $passwd);
    }

    if (defined $login_ok) {
      # Login OK
      &login;
    } else {
      # Login fehlgeschlagen
    }

    (ungetestet)

    Peter

    1. Danke nochmals,

      Es Funtioniert wie ich mir das so gedacht habe,
      Nur Leider (für die anderen Leser hat sich ein Rechtschreibfehler
      eingeschlichen). Hier jetzt das Funtionstüchtige Script.

      my $login_ok;
      for (@passwort) {
        chomp;     # nur zur Sicherheit
        my ($user, $passwd) = split //;
        $login_ok = 1 if ($user eq $user_jetzt and $pass_jetzt eq $passwd);
      }
      if (defined $login_ok)
          {
          &login;  # Login OK
          }
      else
          {
          &falsch; # Login fehlgeschlagen
          }
      exit;

      Danke Peter und Cheatah

      GRUSS Holger