[TYPO3-german] LÖSUNG: Übergabe des Challenge-Wertes (EXT:kb_md5fepw & loginbox_macmade)
Jens Hartlep
news at hartlep-online.de
Mon Sep 4 15:05:37 CEST 2006
Hier die Lösung...
*platsch* Manchmal sieht man den Wald vor lauter Bäumen nicht...
Hier die Lösung
[I]class.tx_loginboxmacmade_pi2.php[/I]
[PHP]
$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 .'">';
[/PHP]
TemplateDatei für Login:
[HTML]
<!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>
[/HTML]
Damit läuft alles :)
Jens Hartlep schrieb:
> 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:
>
> [HTML]
> <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>
> [/HTML]
>
> Diese Zeilen habe ich aus dem FE-Quellcode mit der Newloginbox.
>
> Hier nun ein Ausschnitt aus der class.tx_loginboxmacmade_pi2.php, welche
> für die Loginbox zuständig ist:
>
> [PHP]
> $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'] . '">';
> [/PHP]
>
> Die [B]JS[/B]-Anweisungen kann ich im entsprechenden Template für die
> Loginbox unterbringen.
> Die [B]OnSubmit[/B]-Anweisung kann ich mit
>
> [PHP]
> $templateMarkers['###SUPERCHALLENGE_PASS###']='superchallenge_pass(this);
> return true;'
> [/PHP]
>
> in der php-Datei unterbringen.
> Doch nun zur eigentlichen Frage:
>
> Wo bekomme ich in der geänderten Zeile
>
> [PHP]
> $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 .'">';
> [/PHP]
>
> den Wert von "[I]$challenge[/I]" her?
>
> Wenn ich das System nicht komplett falsch verstanden habe, müßte diese
> Lösung doch funktionieren, oder?
More information about the TYPO3-german
mailing list