Thread Mehrere kleine Probleme bei kleinem Test Loginsystem (23 answers)
Opened by Monk21 at 2009-04-02 16:07

Monk21
 2009-04-02 16:07
#120193 #120193
User since
2009-04-02
8 Artikel
BenutzerIn
[default_avatar]
Guten Tag,
ich habe mich nun hier angemeldet. Ich hatte immer als Gast "Monk" geschrieben :)

Auf den Tip von murphy bin ich heute doch zum HTML::Template Modul gekommen, und bis jetzt macht es mir Spaß und es macht echt sinn es zu benutzen .

Leider habe ich nun aber auch 3 kleinere Probleme.

Dies ist der Code von der "check.pl" :

Code (perl): (dl )
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
53
54
55
#!/usr/bin/perl

use strict;
use CGI;
use CGI qw(:standart);
use CGI::Carp qw(fatalsToBrowser);
use HTML::Template;
use Digest::MD5 qw(md5_hex);
require("config.pl");

my $cgi = CGI->new();
my $template = HTML::Template->new(filename => "template/check.tmpl");

my $user_input = CGI::param();
my $pass_input = CGI::param();



if((!defined($user_input)) || (!defined($pass_input))) { 
$template->param(
                weiterleitung => "index.pl",
                        farbe => "red",
                 checkausgabe => "Please insert your Username and Password"
                );
}

elsif((defined($user_input)) && (defined($pass_input))) {
my $user = md5_hex($user_input);
my $pass = md5_hex($pass_input);
        if(($user eq $config{'login_user'}) && ($pass eq $config{'login_pass'})) {
        $template->param(
                        weiterleitung => "online.pl",
                                farbe => "green",
                         checkausgabe => "Welcome <b>admin</b>"                 
                        );      
        }
        else {
        $template->param(
                        weiterleitung => "index.pl",
                                farbe => "red",
                         checkausgabe => "Wrong Username or Password! Please try again ..."
                        );
        }
}

else {
$template->param(
                        weiterleitung => "index.pl",
                                farbe => "red",
                         checkausgabe => "OH MY GOD «ERROR» "
                        );
}

print $cgi->header();
print $template->output();


Dies ist das Template "check.tmpl" :

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
<html>
<head>
<title>Login</title>
<link rel="stylesheet" type="text/css" href="template/style.css"/>
<link rel="shortcut icon" type="image/x-icon" href="template/ico.png"/>
<meta http-equiv="refresh" content="5; URL=<TMPL_VAR NAME="weiterleitung">">
</head>
<body bgcolor="#000000">
<font color="<TMPL_VAR NAME="farbe">"><center> >> <TMPL_VAR NAME="checkausgabe"> << </center></font>
</body>
</html>


Und dies die Config "config.pl" :

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# ----------------------------------- # 
# Here you have to make your Settings #
# ----------------------------------- #

%config = (


# ------ MySql Settings ------  #
mysql_host => 'localhost',
mysql_user => 'testuser',
mysql_pass => 'testpw',
mysql_db => 'test_db',
        
 # ------ Login Settings [ only as MD5 ] ------  #
login_user => '5d9c68c6c50ed3d02a2fcf54f63993b6',
login_pass => '8eee3efdde1eb6cf6639a58848362bf4',
);

return %config;


So, nun zu meinem ersten Problem.
Manchmal schreibt er mir folgende Error Meldung in die Log.

Quote
[error] Attempt to reload HTML/Template.pm aborted.\nCompilation failed in require at /opt/lampp/htdocs/webpanel/index.pl line 7.\nBEGIN failed--compilation aborted at /opt/lampp/htdocs/webpanel/index.pl line 7.\n


Was genau ist der Fehler ? Beim aktualisieren der Seite funktioniert es dann wieder .

Mein zweites Problem :

Wenn ich die richtigen Logindaten eingebe, dann springt er trotzdem zur Anweisung "Wrong Username ..."

Wenn ich nun die Ausgabe verändere in

Code (perl): (dl )
1
2
3
4
5
$template->param(
                        weiterleitung => "index.pl",
                                farbe => "red",
                         checkausgabe => "Wrong Username $config{'login_user'} or Password $config{'login_pass'}! Please try again ..."
                        );


Zeigt er mir aber die richtigen MD5 Hashes an.
Wieso klappt der Vergleich denn nicht ?

Mein 3tes und letztes Problem liegt darin, das wenn ich nichts beim Login eingebe, er nach "Wrong Username ..." springt.

Abfragen mit !defined() geht glaube auch nicht, da die Vars durch den CGI::param() schon definiert sind oder ?

Wie kann ich das lösen?

Vielen Dank schonmal für eure Lösungen.

mfg Monk21

View full thread Mehrere kleine Probleme bei kleinem Test Loginsystem