Leser: 38
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
#!/usr/bin/perl -T # Taint Modus: Warnt, wenn man ungeprüfte Werte benutzt. use strict; use warnings; use Fcntl qw(:DEFAULT :flock); use CGI::Carp qw/fatalsToBrowser/; # Fürs Entwickeln, damit Fehler im Browser erscheinen. - Später auskommentieren. use CGI; $CGI::DISABLE_UPLOADS = 1; # kein Upload $CGI::POST_MAX=1024*50; # max angenommene Datenmenge hier 50K my $cgi = $CGI->new(); # Objekt erstellen $cgi->cgi_error() and die $Cgi->cgi_error(); # Cgi Fehler # Abfragen, ob Login Parameter vorliegen. # Gehe davon aus, dass die HTML Formularfelder 'name' und 'passwort' genannt wurden. my $login = 0; # 1 = Benutzer hat sich angemeldet if ( defined $cgi->param('name') && defined $cgi->param('passwort') ){ sysopen (DAT,'PfadZurDatei',O_RDONLY) or die; flock (DAT, LOCK_SH) or die; while (<DAT>) { chomp; # Newsline entfernen (my $name, my $pass) = split ','; if ( $name eq $cgi->param('name') && $pass eq $cgi->param('passwort') ){ $login = 1; last; #while Schleife verlassen. } } close DAT; if ($login) { ... mach was } } ...Gib das Login Formular aus ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
<head>
<title>Abfrage Benutzername und Passwort</title>
</head>
<body>
<form action="/cgi-bin/passwort.cgi" method=POST>
Benuzername: <input type="text" name="name" size="15"><br>
Passwort: <input type="text" name="passwort" size="15" /><br>
<input type="submit" value="Login">
<input type="RESET" value="Löschen">
</form>
<br><br>
</body>
</html>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
#!c:/programme/perl/bin/perl.exe -w read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'}); print "Content-type: text/html\n\n"; print "<html>"; print "<head>"; print "<title> Berechnung des CGI-Programms </title>"; print "</head>\n"; print "<body>"; print "<div align=center><h1>Antwortseite des CGI-Programms</h1>"; print "<hr>"; print "<b>$Daten</b>"; print "</div>"; $login = 0; open (LESEN, "<passwort.txt") || die "Die Datei $! kann nicht geoeffnet werden"; while ($zeile = <LESEN>) { chomp($zeile); ($username, $userpasswort) = split(/,/, $zeile); if ($name eq $username && $passwort eq $userpasswort) { $login = 1; last; } } close LESEN; if ($login) { print "Sie werden eingeloggt!"; } else { print "Die eingegebenen Daten sind nicht korrekt. Sie werden nicht eingeloggt!"; print "$name"; } print "</body>"; print "</html>";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# dein Code, unschön:
while ($zeile = <LESEN>)
{
chomp($zeile);
($username, $userpasswort) = split(/,/, $zeile);
if ($name eq $username && $passwort eq $userpasswort)
{
$login = 1;
last;
}
}
# zum Vergleich, selber Code, eingerückt:
# (so mache ich das gerne)
while ($zeile = <LESEN>) {
chomp($zeile);
($username, $userpasswort) = split(/,/, $zeile);
if ($name eq $username && $passwort eq $userpasswort) {
$login = 1;
last;
}
}
# eingerückt, mit anderem Klammer-Stil:
while ($zeile = <LESEN>)
{
chomp($zeile);
($username, $userpasswort) = split(/,/, $zeile);
if ($name eq $username && $passwort eq $userpasswort)
{
$login = 1;
last;
}
}