Halihallo Aqua
Meine Frage:
Der Aufruf für dieses Modul also zur Darstellung
von diesem Zeugs für den Login,
das hat EXTREM viele variablen die übergeben werden.
Darstellung hat _absolut nichts_ mit Authentifizierung zu tun => wird in OOP getrennt.
Im endeffekt weiss ich nach 2 Stunden schon nichtmehr,
an welcher stelle welche variable gehoert
Dann splitte das Zeug auf verschiedene Methoden auf; Methodennamen bzw. Hashes eignen
sich wesentlich besser, da die Werte gleich mit dem Namen assoziiert werden können,
das menschliche Gehirn kann sich Zuordnungen wesentlich besser merken, als nummerische
Positionen => also: entweder Hashes als Konfiguration oder jeder Wert über Methode
festlegen.
Beispiel:
$oologin->login("login","user","pass","Du bist eingeloggt","Passwort falsch","Login Falsch","Dein Username","Dein persoenliches Passwort");
Das ist ja uuuur lange!
Kürzer wirds bestimmt nicht werden, jedoch einfacher zu merken.
-----
OOP: Für jede "Funktion" ein Modul => Design-Modul, Code/Verarbeitungs-Modul, das mal
grundsätzlich zu OOP. In deinem Beispiel: oologincontrol und oologindesign.
oologincontrol: Verarbeitung und Behandlung der Authentifizierung eines Kunden.
oologindesign: Ausgabe und "Berechnung" des Designs.
oologincontrol
new()
setLogin( $login_name )
setPass( $password )
setLoginPass( $usr, $login, $pass ); # gleich alles in einem
true/false = authenticate( $login, $pass )
# verglicht die Werte $login und $pass mit
# denjenigen von setLogin/setPass
# true : Kunde ist authentifiziert
oologindesign
new($oologin_control) # controler-Instanz mit Kundendaten übergeben.
setData( %hash ) # Formulardaten
setMsgs( ERR_NOT_AUTH => $falsches_pwd,
ERR_LOG_WRONG=> $login_wrong,
ERR_PAS_WRONG=> $password_wrong,
MSG_YOUR_PWD => $dein_passwort,
MSG_YOUR_LOG => $dein_login)
$html_code = parse() # was soll jetzt geschehen?
parse überprüft %hash auf $hash{$button}, falls gesetzt, wird der Kunde mit Daten aus
%hash gegen $oologin_control geprüft und ggf. Fehlermeldung ausgegeben. Falls nicht,
wird das Formular ausgegeben.
Möglichkeiten in oologindesign: "parse" (auf Cntl zugreifen)
sub parse {
my ($self) = @_;
$oo_cntl = $self->getOOLoginCntl;
if ($oo_cntl->isAuthenticated) {
print $self->{MSG_CORRECT_LOGIN};
}
}
Programm
use CGI;
my $cgi = CGI->new;
my $oo_cntl = oologincontrol->new;
my $oo_design = oologindesign->new( $oo_cntl );
$oo_cntl->setUser( 'testuser' );
$oo_cntl->setPass( 'testpassphrase' );
$oo_design->setData( $cgi->Vars );
$oo_design->parse;
----
So, das wäre ein Beispiel. Ich hoffe, dass dir das etwas hilft.
Viele Grüsse
Philipp