[GastForen Archiv Perl und CGI Anfängerproblem bei Passwortabfrage...

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Archiv - Archivierte Foren
Themen
Beiträge
Moderatoren
Letzter Beitrag

Anfängerproblem bei Passwortabfrage...

Anonym
Beiträge gesamt: 22827

28. Jan 2005, 17:06
Beitrag # 1 von 3
Bewertung:
(2439 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich hatte die leidvolle Anfängeraufgabe, ein Perl-Skript zu erstellen, in dem mit Hilfe eines Hashes eine Passwortabfrage stattfinden soll. Im Großen und Ganzen ist mir das auch geglückt, das Skript läuft fehlerfrei - bis auf eine Ausnahme: Wenn ich einen Benutzernamen eingebe, der nicht im Hash definiert wurde, bekomme ich viele Fehlermeldungen und bin dann doch erfolgreich eingeloggt :-(

Kann mir jemand dabei helfen, die Überprüfung des Benutzernamens noch in dieses Skript einzubauen?

Hier mein bescheidenes Werk:


#!/usr/bin/perl -w

%login = ("Franz" => "null",
"Peter" => "eins",
"Anna" => "zwei",
"Willi" => "drei",
"Inga" => "vier",
);
print "Bitte geben Sie Ihren Benutzernamen ein:\n";
$user = <STDIN>;
chomp $user;

if(defined($login{$user}))
{
print "Bitte geben Sie Ihr Passwort ein:\n";
$pass = <STDIN>;
chomp $pass;
}
while ($login{$user} ne $pass)
{
print "Ihre Eingabe war leider falsch. Bitte versuchen Sie es noch einmal:\n";
$pass = <STDIN>;
chomp $pass;
}
if ($login{$user} eq $pass)
{
print "Hallo $user, Ihr Login war erfolgreich!\n";
}
X

Anfängerproblem bei Passwortabfrage...

oesi50
  
Beiträge gesamt: 2315

28. Jan 2005, 18:13
Beitrag # 2 von 3
Beitrag ID: #140267
Bewertung:
(2438 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi Anonym,

so geht's:

#!/usr/bin/perl -w

use strict; # sollte man grundsätzlich verwenden

my %login = ("Franz" => "null",
"Peter" => "eins",
"Anna" => "zwei",
"Willi" => "drei",
"Inga" => "vier",
);

my $user; # bei strict müssen Variablen deklariert werden
my $pass;
while (1){ # ewige Schleife, bei Bedarf kann hier die Anzahl der Versuche gezählt werden
print "Bitte geben Sie Ihren Benutzernamen ein:";
$user = <STDIN>;
chomp $user;
print "Bitte geben Sie Ihr Passwort ein:";
$pass = <STDIN>;
chomp $pass;
if(defined $login{$user} && $login{$user} eq $pass){ # passwort und Name sollte immer in einem "Aufwasch" geprüft werden
print "Hallo $user, Ihr Login war erfolgreich!\n";
last; # wenn ok wird die Schleife verlassen
}
else{ # sonst nicht
print "Ihre Eingabe war leider falsch. Bitte versuchen Sie es noch einmal:\n";
}
}


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#140255]
(Dieser Beitrag wurde von oesi50 am 28. Jan 2005, 18:14 geändert)

Anfängerproblem bei Passwortabfrage...

Anonym
Beiträge gesamt: 22827

29. Jan 2005, 12:04
Beitrag # 3 von 3
Beitrag ID: #140344
Bewertung:
(2438 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Oesi!

Danke für Deine schnelle Hilfe - ich werde Deinen Vorschlag gleich ausprobieren.

Gruss
Senta


als Antwort auf: [#140255]