Moin,
ich bin nun schon seit ein paar Tagen auf der Suche nach einer Lösung für das folgende Problem:
Ich habe auf meinem T3-Projekt im Template die small_login_box aus der EXT loginbox_macmade eingebunden. Damit habe ich auf jeder Seite des Projektes eine Login-/Logoutbox.
Nun möchte ich gerne die FE-User Passwörter mit MD5 verschlüsseln. Hierzu habe ich mir die EXT kb_md5fepw installiert. Wenn ich dann allerdings versuche, mich einzuloggen, bekomme ich den Fehler ungültiges Passwort.
Ich bin auf der Suche nach einer Lösung für dieses Problem auf diese Lösungsansätze gestoßen:
Diese Zeilen habe ich aus dem FE-Quellcode mit der Newloginbox.HTML-Code:<script language="JavaScript" type="text/javascript" src="typo3/md5.js"></script> <script type="text/javascript"> function superchallenge_pass(form) { var pass = form.pass.value; if (pass) { var enc_pass = MD5(pass); var str = form.user.value+":"+enc_pass+":"+form.challenge.value; form.pass.value = MD5(str); return true; } else { return false; } } </script> <form action="..." method="post" onSubmit="superchallenge_pass(this); return true;"> ... <input type="hidden" name="challenge" value="..."> </form>
Hier nun ein Ausschnitt aus der class.tx_loginboxmacmade_pi2.php, welche für die Loginbox zuständig ist:
Die JS-Anweisungen kann ich im entsprechenden Template für die Loginbox unterbringen.PHP-Code:$templateMarkers['###HIDDEN_FIELDS###'] = '<input name="logintype" type="hidden" value="login"><input name="redirect_url" type="hidden" value="' . $redirect . '"><input name="pid" type="hidden" value="' . $this->conf['feUsersPID'] . '">';
Die OnSubmit-Anweisung kann ich mit
in der php-Datei unterbringen.PHP-Code:$templateMarkers['###SUPERCHALLENGE_PASS###']='superchallenge_pass(this); return true;'
Doch nun zur eigentlichen Frage:
Wo bekomme ich in der geänderten Zeile
den Wert von "$challenge" her?PHP-Code:$templateMarkers['###HIDDEN_FIELDS###'] = '<input name="logintype" type="hidden" value="login"><input name="redirect_url" type="hidden" value="' . $redirect . '"><input name="pid" type="hidden" value="' . $this->conf['feUsersPID'] . '"><input type="hidden" name="challenge" value="' .$challenge .'">';
Wenn ich das System nicht komplett falsch verstanden habe, müßte diese Lösung doch funktionieren, oder?
Geändert von Cesideem (04.09.2006 um 14:14 Uhr)
"When it looks like fake, it´s Aikido"
*platsch* Manchmal sieht man den Wald vor lauter Bäumen nicht...
Hier die Lösung
class.tx_loginboxmacmade_pi2.php
TemplateDatei für Login:PHP-Code:$challenge = md5(time().getmypid());
$res = $GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_kbmd5fepw_challenge', array('challenge' => $challenge, 'tstamp' => time()));
// Overwriting template markers
$templateMarkers['###USERNAME###'] = 'user';
$templateMarkers['###PASSWORD###'] = 'pass';
$templateMarkers['###ONSUBMIT###'] = 'superchallenge_pass(this); return true;';
$templateMarkers['###HIDDEN_FIELDS###'] = '<input name="logintype" type="hidden" value="login"><input name="redirect_url" type="hidden" value="' . $redirect . '"><input name="pid" type="hidden" value="' . $this->conf['feUsersPID'] . '"><input type="hidden" name="challenge" value="'. $challenge .'">';
Damit läuft alles :)HTML-Code:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <title>Template File</title> <meta name="generator" content="BBEdit 8.2"> </head> <body> <h1>Login</h1> <!-- ###LOGIN### --> <script language="JavaScript" type="text/javascript" src="typo3/md5.js"></script> <script language="JavaScript" type="text/javascript"> <!-- function superchallenge_pass(form) { var pass = form.pass.value; if (pass) { var enc_pass = MD5(pass); var str = form.user.value+":"+enc_pass+":"+form.challenge.value; form.pass.value = MD5(str); return true; } else { return false; } } // --> </script> <form class="small_login_form" action="###FORM_URL###" method="post" enctype="###FORM_ENCTYPE###" onSubmit="###ONSUBMIT###"> <label class="small_login_label" for="Username">Benutzername</label> <input class="small_login_input" name="###USERNAME###" type="text" size="10"><br class="small_login_br" /> <label class="small_login_label" for="Password">Passwort</label> <input class="small_login_input" name="###PASSWORD###" type="password" size="10"> <input class="small_login_submit" name="submit" type="image" src="###EXT_PATH###res/login.gif"><br class="small_login_br" /> ###HIDDEN_FIELDS### </form> <!-- ###LOGIN### --> <h1>Logout</h1> <!-- ###LOGOUT### --> <form class="small_logout_form" action="###FORM_URL###" method="post" enctype="###FORM_ENCTYPE###"> <label class="small_logout_label">###USERNAME###</label> <input class="small_logout_logout" name="submit" type="image" src="###EXT_PATH###res/logout.gif"> ###HIDDEN_FIELDS### </form> <!-- ###LOGOUT### --> </body> </html>
"When it looks like fake, it´s Aikido"
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Lesezeichen