User-Login
Holger
- perl
0 Cheatah0 Peter Squentz0 Holger
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
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
Die Passwörter sind in einer speraten Datei gespeichert.
z.B. Inhalt der passwort DateiIchtest
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
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