Cookie auslesen in .tpl
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anwendung
array
auslese
code
datei
entsprechende stelle
genauere angaben
halten
inhalt
login
obigen beispiel
post
problematik
schauen
start
stehen
system
tun
zugreifen
zuweisung
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Und wie sieht der Code dazu aus?
Mit php hab ich es schon probiert:
<input type="text" size="15" maxlength="20" name="username" value="<?php echo $_COOKIE["Name"]; ?>" />
Das geht auch in einer normalen .php-Datei, aber die Datei in der dieser Code stehen soll ist ja eine .tpl-Datei. Die Ausgabe ist dann nicht der Inhalt des Cookies sondern der ganze Code, den ich geschrieben habe. -
Was für ein TPL System ist denn das? Was eigenes oder Smarty? Ein TPL wird schließlich auch von PHP gelesen bevor es an den Client geht.
-
evil-devil schrieb: Was für ein TPL System ist denn das? Was eigenes oder Smarty? Ein TPL wird schließlich auch von PHP gelesen bevor es an den Client geht.
Keine Ahnung. Das Script ist nicht von mir und ich hab normalerweise nichts mit php und Co zu tun.
Hier mal der ganze Code, der in der Datei steht:
<div class="center">
<form action="index.php" method="post">
<p class="center" id="error_js"><span class="red">{you.need.javascript}</span></p>
<p class="center" id="error_http"><span class="red">{you.need.activex}</span></p>
<p class="red">{_error_message}</p>
<p class="center">{_message}</p>
<fieldset>
<legend>{chat.login}</legend>
<table id="table" cellspacing="3" cellpadding="5">
<!--BEGIN public-->
<tr>
<td class="left">{enter.username}</td>
<td><input type="text" size="15" maxlength="20" name="username" value="" /></td>
</tr>
<!--END-->
<!--BEGIN private-->
<tr>
<td class="left">{enter.given.username}</td>
<td><input type="text" size="15" maxlength="10" name="username" value="{_username}" /></td>
</tr>
<tr>
<td class="left">{enter.given.password}</td>
<td><input type="password" size="15" maxlength="10" name="password" /></td>
</tr>
<!--END-->
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2" class="center"><input type="image" src="../../images/s2dbtncht.gif" id="submitbutton" name="joinbutton" value="{enter.chat}" /></td>
</tr>
<input type="hidden" name="join" value="1">
</table>
</fieldset>
</form>
</div>
<script type="text/javascript">
// <![CDATA[
// Javascript Überprüfung
document.getElementById('error_js').style.display = 'none';
document.getElementById('table').style.display = 'inline';
// ActiveX Überprüfung
if (navigator.appName == "Microsoft Internet Explorer") {
try {
http = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
document.getElementById('error_http').style.display = 'block';
document.getElementById('table').style.display = 'none';
}
}
// ]]>
</script>
Diese Datei (start.tpl) ist Teil eines Chatrooms, und ich will einfach erreichen, dass als Username im Chat der Wert aus dem Cookie verwendet wird. -
Ja schön, und die dazugehörige PHP Datei die das Template aufruft? In der musst du dann einer Template Variable deinen Cookiewert zuweisen. Leider ist es so ohne genauere Angaben schwierig zu helfen. Die Problematik ist klar, aber an deiner Stelle würde in in die PHP Datei schauen und versuchen nach ähnlichen Konstrukten wie die der Template Variablen ausschau zu halten und ob da irgendwo irgendwie etwas zugewiesen wird. Oder falls die PHP Datei nicht zu groß ist hier zu posten bzw. auf einer PasteIt Seite einzubauen.
-
Hier ist die entsprechende Stelle in der php-Datei, in der start.tpl aufgerufen wird:
if (!preg_match('/^[0-9a-zA-Z]{3,20}$/', post('username'))) {
$template->file('start.tpl');
$template->assign(array(
'_error_message' => $lang['username.invalid'],
'_username' => post('username'),
));
$template->out();
exit;
-
Ah ^^
Also, wenn das Feld im Cookie wie in deinem obigen Beispiel "Name" heißt, dann erweiterst du die Template Zuweisung wie folgt.
$template->assign(array( '_error_message' => $lang['username.invalid'], '_username' => post('username'), '_cookieUsername' => $_COOKIE['Name']));
Und im HTML kannst du dann entsprechend darauf zugreifen.
<input type="text" size="15" maxlength="10" name="username" value="{_cookieUsername}" />
Alternativ könntest du aber auch den Wert, der zu _username zugewiesen ist ändern und nicht über die Postdaten zuweisen lassen.
Also:
$template->assign(array( '_error_message' => $lang['username.invalid'], '_username' => ( isset($_COOKIE['Name']) && $_COOKIE['Name'] !== ? $_COOKIE['Name'] : post('username') ) );
Dann würde in _username der Cookiename stehen sofern im Cookie ein Name steht und ansonsten halt der Wert aus der Post Variable. -
Ich hab jetzt noch ein bisschen herumgebastelt, aber jetzt funktioniert es.
Danke evil-devil -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage