Author Topic: Dynamische Zuweisung von Includes/Templates  (Read 1556 times)

0 Members and 1 Guest are viewing this topic.

Guest

  • Guest
Dynamische Zuweisung von Includes/Templates
on: Thu, 11. September 2003 - 21:11:53
hi,

ich nutze seit kurzem vLib. ist soweit recht schick aber hat für mich ein kleines problem, vielleicht kennt ihr die lösung.

wenn ich in mein main template eine datei inkludieren will, der dateiname sich aber aus der url ergibt, kann ich ihn nicht dynamisch zuweisen.

beispiel:

index.php?link_id=irgendwas

$link_id enthält nun "irgendwas".

<tmpl_include file=$link_id.".tpl">
oder
$tmpl->setVar('pagecontent', $pid.".tpl");
<tmpl_include file="{tmpl_var name='pagecontent'}">
^^
obiges geht bei vLib nicht. mit phplib funktioniert eine dynamische zuweisung die sich aus der url heraus gibt. gibts da nen trick oder ne möglichkeit was zu basteln? viel fällt mir nicht ein :-/

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Dynamische Zuweisung von Includes/Templates
Reply #1 on: Thu, 11. September 2003 - 22:02:25
Schau Dir bitte das mal an:

/forum/index.php/topic,174

Zephyrus

  • Guest
Dynamische Zuweisung von Includes/Templates
Reply #2 on: Sat, 13. September 2003 - 09:54:58
Danke dir, hatte nur den deutschen Teil des Forums bisher abgegrast  :)

Das ist natürlich genau die Funktion, die ich gesucht hatte, update doch mal dein Tutorial und nimm das mit auf. Oder meins ist zu alt  :)

Dann noch was anderes, ich hatte mich mit Loops & Co auseinander gesetzt aber irgendwie kam ich damit nicht klar. Also habe ich kurzer Hand mal eine eigene Klasse programmiert für vLib und Listboxen. Großer dank geht dabei an bl4ckh4wk ausm #php.de IRC, der das ganze dann am Schluss nochmal aufgemotzt hat :)

Damit ist es möglich, Listboxen zu realisieren ohne die Loops zu verwenden und das ganze per Platzhalter ins Template zu bauen.
Naja, schauts euch an, wer lieber mit Loops arbeitet, der soll das tun, ansonsten ist der Code frei verwendbar ;)

Code: [Select]

// Listbox Klasse



?php

    class Listbox

        var $listbox;    

    

        function Listbox$listbox_name, $listbox_value, $listbox_content

            if ! count$listbox_value == count$listbox_content

                die 'Falsche Parameterübergabe, $listbox_value und $listbox_content falsche Anzahl der Elemente';

            

            

            $i=0;

            

            $listbox = select name=.$listbox_name.;

            

            

            while$i count$listbox_value

                if $i == 0

                    $listbox .= option value=.$listbox_value$i. selected.$listbox_content$i./option;

                    $i++;

                 else

                    $listbox .= option value=.$listbox_value$i..$listbox_content$i./option;

                    $i++;

                

            

            

            $listbox .= /select;

            

            $this-listbox = $listbox;

            

            return $listbox;

        

        

        function getListbox

            return $this-listbox;

        

    

?



Code: [Select]

// Das muss ins PHP Script, welches das Template parsed.



    // Testvariablen

    $listbox_name = testname;                      

    $listbox_value = array001, 002, 003;      

    $listbox_content = arrayrot, blau, gelb;



    // Aufruf der Klasse

    $oListbox = new Listbox $listbox_name, $listbox_value, $listbox_content;

    $listbox_output = $oListbox-getListbox ;



    $tmpl = new vlibTemplate'tpl/show_article.tpl';

    $tmpl-setVar'listbox', $listbox_output;

    $tmpl-pparse;



Code: [Select]

// Das ist der zu verwendene Platzhalter im Template dafür

tmpl_var name='listbox' escape='none'



Viel Spaß damit  :wink:

Zephyrus

  • Guest
Dynamische Zuweisung von Includes/Templates
Reply #3 on: Sat, 13. September 2003 - 11:00:20
...und da bin ich wieder  :)

Ich habe eine Sicherheitslücke entdeckt, ist zwar eine die fast jeder halbwegs gute Programmierer kennt aber durch diese neue Funktion, wollte ich doch mal drauf hinweisen.

Wer nachfolgend (wie ich) dynamisch das ganze so einbindet:
Code: [Select]

tmpl_include file=./scr/varcontent.php /


der muss damit rechnen, das findige Leute in der URL folgendes eingeben könnten:

index.php?pid=/../../irgendeinanderesscript

Das würde vLib/PHP dann auch genauso ausführen. Deshalb habe ich kurz eine Klasse geschrieben, die das URL-gekasper ausschaltet.

Code: [Select]

// Das ist die Klasse url.lib.php



?php

// Class clearGetUrlStrings

    

    class clearGetUrlStrings

        var $kill_input;

  

        function clearGetUrlStrings$pid

            $kill_input = array/ = , . = ;

            $pid = strtr$pid, $kill_input;

            $pid = strip_tags$pid;

            $pid = chop $pid;

   $this-pid = $pid;

        

        function getClearUrlStrings

            return $this-pid;

        

    

?



In eurem Script schreibt ihr dann nur noch rein:

Code: [Select]

// Required Files

  require_oncelib/url.lib.php;



// URL Querry

  $pid = $_GETpid;

  $pid_tmp = new clearGetUrlStrings$pid;

  $pid = $pid_tmp-getClearUrlStrings ;



Und schon enthält $pid nichts gefährliches mehr. Sollte jemand noch ne aufmotz Idee haben oder ne Erweiterung, postet einfach hier drunter :)

Hoffe ich hab irgendwem damit geholfen.

joachimseitz

  • Guest
Dynamische Zuweisung von Includes/Templates
Reply #4 on: Sat, 15. November 2003 - 17:07:16
frage: besteht dieser "bug" noch?

außerdem habe ich net ganz kapiert wie das was ändern kann bitte mal erklären

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Dynamische Zuweisung von Includes/Templates
Reply #5 on: Sun, 16. November 2003 - 15:00:52
Code: [Select]
tmpl_include file=./scr/varcontent.php / Ist kein Bug sondern ein Feature. Wenn die Applikation zu unsicher gecodet ist, ist das kein Problem von vLIB.

Zur Info: Ich verwende den TMPL_INCLUDE nie mit php Dateien.

Gruß
Claus