kostenloser Webspace werbefrei: lima-city


Cookie auslesen in .tpl

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    h******g

    Hallo!

    Ist es irgendwie möglich in einer tpl-Datei ein Cookie auszulesen?
    <td><input type="text" size="15" maxlength="20" name="username" value="" /></td>

    In value soll dann der Inhalt des Cookies stehen.

    mfg hm4-blog
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. e********l

    Du kannst den Cookie Value doch als PHP Variable übergeben. Ansonsten musst du dir per Javascript die Cookies die auf der Domain liegen auslesen und den gewünschten Wert aus dem Cookie der Anwendung zuweisen.
  4. Autor dieses Themas

    h******g

    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.
  5. e********l

    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.
  6. Autor dieses Themas

    h******g

    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">&nbsp;</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.
  7. e********l

    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.
  8. Autor dieses Themas

    h******g

    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;
  9. e********l

    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.
  10. Autor dieses Themas

    h******g

    Ich hab jetzt noch ein bisschen herumgebastelt, aber jetzt funktioniert es.
    Danke evil-devil
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!