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
# Cookie Login
$config{'max_session_hours'} = 4; # Max session time before user must login again.
$config{'crypt_salt'} = 'EJ'; # You should make this 2 char salt unique.
local %form = &get_form_data unless %form;
use vars qw/%cookie $loginalias $loginpassword/;
my $cookieName = 'SessionCookie';
foreach my $rel(split /; /, $ENV{HTTP_COOKIE}){
next unless $rel=~s/^\Q$cookieName//;
my($bufName, $bufVal) = split(/=/, $rel);
$bufVal =~ s/%([a-fA-F0-9]{2})/pack("H2",$1)/eg;
$cookie{$bufName} = $bufVal;
}
my %LOGIN;
dbmopen(%LOGIN, 'Session_keys', 0644) or &oops('Cannot open login DBM keys.');
foreach(%LOGIN) { delete $LOGIN{$_} unless ($_ + $config{'max_session_hours'} * 3600 > time); }
if($config{'regdir'} ne ''){
$form{loginalias} = ucfirst lc $form{loginalias};
my ($password, $undef) = &read_reg_file($form{loginalias});
if (lc $form{loginpassword} eq lc $password) {
($loginalias, $loginpassword) = setlogin();
} else {
print "Location: $ENV{'SCRIPT_NAME'}\?action=reg\n\n";
}
}
untie(%LOGIN);
if ($form{'LOGOUT'}) {
foreach(%LOGIN) { delete ($LOGIN{$_}); }
print "Location: $ENV{'SCRIPT_NAME'}?action=logout\n\n";
}
# End Cookie Login
#-########################################
# Print The Page Header
#
print "Content-type: text/html\n\n";
print $config{'header'};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#-########################################
# Sub: Verify a secure login
sub verify_login {
if ($loginalias ne '') {
my($password, $undef) = &read_reg_file($loginalias);
&oops('You must enter a valid username and password') unless ($loginpassword ne '');
&oops('Incorrect username or password.') unless ($loginpassword eq crypt((lc $password), $config{'crypt_salt'}));
$form{'ALIAS'} = $loginalias;
$form{'PASSWORD'} = $password;
#print "($loginalias)($password)";
return 1;
}else{
&login_form;
return '';
}
}
#-########################################
Quotelocal %form = &get_form_data unless %form;
QuoteCode: (dl )1
2
3
4
5
6
7
8
9
10
11
12sub verify_login {
if ($loginalias ne '') {
my($password, $undef) = &read_reg_file($loginalias);
&oops('You must enter a valid username and password') unless ($loginpassword ne '');
# ...
return 1;
}else{
&login_form;
return '';
}
}
1 2 3 4 5 6 7 8 9 10 11
sub verify_login { my $loginalias = shift; if ($loginalias eq '') { login_form; return ''; } my($password, $undef) = read_reg_file($loginalias); oops('You must enter a valid username and password') if $loginpassword eq ''; # ... return 1; }
1 2 3 4 5 6 7 8 9 10
if ($loginname =~ /\s/) { # Benutzername enthält mindestens 1 Leerzeichen # dann entweder ungültige Zeichen rausnehmen #$loginname =~ s/\s//g; # oder fehlermeldung error('Loginname enthält ungültige Zeichen'); } else { # hier mit login weiter }
2012-12-01T13:27:02 GwenDragonCode (perl): (dl )1 2 3 4 5 6 7if ($loginname =~ /\s/) { # Benutzername enthält mindestens 1 Leerzeichen # dann ungültige Zeichen rausnehmen #$loginname =~ s/\s//g; } else { # hier mit login weiter }
2012-12-01T16:18:37 GwenDragonAnsonsten kannst du auch mein dein Auktions-etc.-Projekt vorstellen im Board Projekte.
2012-12-02T17:24:35 AuctioneerIch mach das Zeugs jetzt so lange, trotzdem nützt mir eine Information, ich würde z.B. 'foreach' und so falsch formulieren oder solle einen 'HASH' schreiben und irgendwo einsetzen, in keinster Form. Ich habe ja die Formel nicht geschrieben, und so, aus dem Ganzen 'gerissen', weiss ich nicht, was ich mit einem 'Umbau' in der Konsequenz vielleicht anrichte...
Komisch dabei ist, dass das Zeugs, was ich baue, meistens zuletzt auch noch funktioniert.
Ich bin also so wie wahrscheinlich 99 Prozent der Personen, die eine Seite wie diese besuchen, um vielleicht Hilfe für ein spezifisches Problem zu suchen, dass sie nicht selber lösen können.
Wenn von diesen 99 Prozent dann 99 Prozent auf ein 'wunderschönes' PHP User Forum abwandern, und sich nie mehr mit Perl beschäftigen werden, dann liegt es vielleicht auch daran, dass auf Perl-Foren vielfach zuviel Fach-Wissen erwartet oder gar vorausgesetzt wird.
Wenn ich kein Benzin mehr habe, will ich ja auch nicht wissen müssen, ob mein Motor ein Einspritzer oder ein Saugmotor ist. Ich möchte lieber wissen, wie und mit was ich den Tankdeckel öffnen kann.
%{ ... }
QuoteIch zumindest gehe davon aus dass die Grundzüge der Sprache und deren Begriffe bekannt sind. Unbekannte Begriffe können mit einer kurzen suche im Internet ermittelt werden.Du hast so Tasten vor dir mit Buchstaben und Zahlen und seltsamen anderen Zeug. Suche dort das "I" und drücke es danach macht du das selbe mit "F" nun drückst du die breite schmale Taste ...
2012-12-02T17:24:35 AuctioneerIch hatte immer Mühe, zu verstehen, weshalb es in jedem Foren mit Einzelnen immer wieder kracht. Viele Wege führen nach Rom, auch im Scripting. Und nur, weil ich etwas, auf den ersten Blick, nicht verstehe, muss es nicht unbedingt schlechter sein als das, was ich darüber zu wissen glaube.
Ich mach das Zeugs jetzt so lange, trotzdem nützt mir eine Information, ich würde z.B. 'foreach' und so falsch formulieren oder solle einen 'HASH' schreiben und irgendwo einsetzen, in keinster Form. Ich habe ja die Formel nicht geschrieben, und so, aus dem Ganzen 'gerissen', weiss ich nicht, was ich mit einem 'Umbau' in der Konsequenz vielleicht anrichte...
(...)
Ich bin also so wie wahrscheinlich 99 Prozent der Personen, die eine Seite wie diese besuchen, um vielleicht Hilfe für ein spezifisches Problem zu suchen, dass sie nicht selber lösen können.
Guest Auctioneerich bin Schweizer. Seit etwa 1845. Abstammung Lauban, Niederschlesien, Herzogtum Preussen.
QuoteDie Software wird unter LGPL Lizenz abgegeben. Das bedeutet, dass Teile davon eingeschränkte Lizenzrechte beinhalten können und die Software nicht einfach kopiert und ggfls. weiter (verkauft)gegeben werden dürfen.
1 2 3 4 5 6
if ($loginname =~ /[^a-zA-Z0-9]/) { # Benutzername enthält auch Zeichen die nicht A..Z und a..z und 0..9 sind error('Loginname enthält ungültige Zeichen! Erlaubt sind nur Zeichen von a bis z, A bis Z, und Ziffern'); } else { # hier mit login weiter }
2012-12-01T14:08:43 GwenDragonNachtrag:
Lasse nur bestimmte Zeichen zu, weil dein Login auch bei anderen Zeichen einnen 500er ergibt.
Code (perl): (dl )1 2 3 4 5 6if ($loginname =~ /[^a-zA-Z0-9]/) { # Benutzername enthält auch Zeichen die nicht A..Z und a..z und 0..9 sind error('Loginname enthält ungültige Zeichen! Erlaubt sind nur Zeichen von a bis z, A bis Z, und Ziffern'); } else { # hier mit login weiter }