[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