Template Engine

  • Servus leute ...
    Ich hab interesse daran mir eine kleine eigene template engine zu schreiben.


    Deshalt wollte ich mal hören was ihr so als gutes/sauberes umsetzungskonzept verfolgen würdet.


    Meine idee wäre es das html und css grundgerüst so zu stricken das es für jede datei verfügbar ist und pro seite einfach eine art container anzulegen der den strukturierten inhalt (html code) beinhaltet der dementsprechend mit seinen texten, bildern oder anderen inhalten gefüllt wird.


    Irgentwelche ideen zur umsetzung oder vorschläge.


    LG
    R4Zz0R

  • Zufällig (jetzt wirklich zufällig!) habe ich grade eine kleine Template-Klasse geschrieben, die funktioniert, aber noch ein, zwei Schwächen hat.
    Schaus dir erstmal einfach nur an, Fragen kann ich gerne beantworten.
    Falls ich meine Dokumentation fertig habe, kann ich sie hier reinstellen.
    DerWaldschrat

  • Also gut, um ein Template zu erstellen, brauchst du einen Ordner, in den alle Template-Dateien kommen.
    Diese müssen dann in Kleinbuchstaben nach dem Schema "deinname.tmp.html" benannt werden.
    Dort kommt dann dein Template-Code rein.


    Alle Template-Befehle werden in HTML-Kommentare geschrieben, Variablennamen dürfen nur Großbuchstaben, den Unterstrich _ und Ziffern enthalten.
    Es gibt folgende:
    ECHO:Variable gibt eine lokale Variable aus.
    GLOBAL:Variable gibt eine globale Variable aus.
    TRUE:Variable:Codeschnipsel1:Codeschnipsel2 (beide ohne spitze Klammern) wenn die lokale Variable true ist, wird Codeschnipsel1 ausgegeben, ansonsten Codeschnipsel2.
    DEFINE:Variablen:Wert definiert eine globale Variable mit Wert, wieder keine spitzen Klammern erlaubt.
    USETEMPLATE:Templatename bestimmt, dass ein Subtemplate genutzt wird, Name des Subtemplates entspricht Dateinamen in Großbuchstaben ohne das ergänzende ".tmp.html"


    Dann gibt es die Möglichkeit, diese Befehle in einen NOTEMPTY-Block einzubetten:
    Dieser überprüft die bei NOTEMPTY:Variable genannte lokale Variable mit der php-empty-Funktion, und führt dann den Codeblock aus, der innerhalb des NOTEMPTY steht, hier lässt sich auch noch eine Alternative einbinden.
    Diese ganzen Anweisungen lassen sich noch in einen Block einbinden, der ein Array durchläuft und nacheinander alle Werte ausgibt.
    Syntax hierfür: START:Variable ... STOP:Variable.
    Innerhalb dieser Schleifen gilt auch die Unterscheidung zwischen globalen und lokalen Variablen: außerhalb der Schleife definierte globale Werte müssen innerhalb der Schleife mit GLOBAL ausgegeben werden, sonst sucht die Schleife nach einem passenden lokalen Wert.


    Falls man verschachtelte Blöcke benötigt, muss man den USETEMPLATE-Befehl verwenden.


    Soweit zu den Sprachregeln.


    Verwendung per PHP:
    Es muss einfach ein neues Template-Objekt (Verzeichnis der Template-Dateien, dateiname ohne .tmp.html) erzeugt werden, dann können einzelne Variablen add_simple_var(name, value) oder Array mit add_array(array) hinzugefügt werden.
    Um START-STOP-Blöcke mit Werten zu füllen, muss ein Arraywert, dessen key dem Blocknamen entspricht und dessen Wert ein indiziertes Array ist, übergeben werden. In diesem indizierten Array sind dann alle Schleifenwerte einzeln enthalten, wieder als Array, mit der normalen Zuordnung key=name => wert=value der Variablen.


    Ich hoffe, diese Erklärungen genügen in Verbindung mit den Beispieldateien.


    Ach ja, das Template ist dann mit compile_file zu kompilieren, dann erhält man als rückgabewert eine Zeichenkette mit den eingesetzten werten.


    DerWaldschrat

  • Also nach einem ersten test ... sieht das ganze schonmal nicht schlecht aus.


    Aber ...
    Ich weiß klingt doof aber ich mag OOP einfach nicht wirklich ..
    daher ist es zwar ein gutes beispiel zur umsetzung und funktioniert gut (wenn man ein vergessenes symikolon und die pfad/dateinamen mal anpasst :;): )...
    ich verstehe den denkansatz...
    Und es ist mir noch etwas zu statisch .. also die übergabe für die namen der menüpunkte und so .. seitentitel ect..


    Jedoch suche ich nach einer prozedualen/funktionsbasierenden umsetzung.


    dabei verstehe ich unter template engine:


    1.) Statisches grundgerüst das mit inhalten einer db gefüllt wird (titel, meta-tags[keywords ect...])
    2.) Dynmaischer content bereich (css anpassbar und von php in die elemente eingesetzt ) -> weiß ist mehr so richtung cms aber gerade an sowas schreibe ich gerade
    3.) Styleswitcher (möchte ich am liebsten von der tpl engine eledigen lassen da sie mir das template ja auch sozusagen parsen soll)


    Stylewitcher ist kein problem für den brauch ich ca 10 minuten XD ^^


    Aber ... ich frage mich was die bessere umsetzung für den rest wäre ... (sollen die informationen des designs aus ner datenbank oder aus dateien kommen ect.)


    Momentan sieht es folgendermaßen aus bei mir ->
    index -> Aufarbeitung von variablen und erstellen eigener arrays für post und get (leichter zu verarbeiten und vor xss & sql injections zu schützen)
    controler ->prüfen und laden des templates (im template wird die model datei geladen und das template führt die funktionen aus bereitet die daten zur ausgabe vor und gibt sie aus )-> gibt die fertige seite zurück
    index -> gibt nach der rückgabe des controlers die seite aus.


    Da möchte ich jetzt eine art template engine dazwischen die über meine übergebenen variablen die passenden elemente und den inhalt läd.


    Irgent eine idee ?..


    LG
    R4Zz0R

  • Also das du kein OOP magst, hab ich ja in dem anderen Thread zu der Wordcounter-Klasse gesehen.
    Aber ich denke mir, gerade für Module, die universell einsetzbar sein sollen, müssen objektorientiert geschrieben sein, sonst klappt die Kapselung der ganzen Sache nicht (überschreiben von Funktionen et cetera).


    Ich weiß, meine Klasse kann noch nicht so viel, aber für den Zweck, für den ich sie evtl. einsetzen will, reichts.


    DerWaldschrat

  • Naja .. also wenn man das richtig anstellt dan braucht man keine funktionen zu überschreiben find ich ...


    Ich hab mir ein anderes system überlegt ...


    Jede modeldatei hat ein array mit erlaubten funktionen...
    dieses wird beim aufruf der funktion (get, post oder mit übergebenen variablen)
    zum kontrollierten funktionsaufruf (functionscontroller lambda funktionalität)
    abgearbeitet und die dortige funktion mit den übergebenen variablen aufgerufen .. so habe ich immer den funktionsumfang in petto solang die funktion verfügbar ist XD


    CyberGirl:
    Ich verwende ungern fremdsoftware .. ich will es selber schreiben können und nicht auf etwas bestehendem aufbauen ..


    LG
    R4Zz0R

  • Zitat von "R4Zz0R"


    CyberGirl:
    Ich verwende ungern fremdsoftware .. ich will es selber schreiben können und nicht auf etwas bestehendem aufbauen ..


    Mir gehts genauso.
    Naja, jeder halt so, wie er mag. Ich find die OOP jetzt auch nicht überragend, nur manchmal halt ganz hilfreich.
    DerWaldschrat

  • naja .. wie gesagt ich mag OOP halt net XD


    Vorschläge .. also linker ect.. hab ich schon .. aber wie mach ich des mit dem html weiter ... wo lege ich die daten eher ab .. (datei/db)
    Schneller wäre db aber woher dan zb. bei meinem installationsscript die daten hernehmen ... (so kontruiert das ich darüber später noch was einstellen kann )


    ect...


    So viele sachen zu beachten und kopf leider grad so leer ..


    LG
    R4Zz0R

  • Zitat von "R4Zz0R"


    Vorschläge .. also linker ect.. hab ich schon .. aber wie mach ich des mit dem html weiter ... wo lege ich die daten eher ab .. (datei/db)
    Schneller wäre db aber woher dan zb. bei meinem installationsscript die daten hernehmen ... (so kontruiert das ich darüber später noch was einstellen kann )


    Welche Daten denn?
    Die Template-Dateien sind wohl als Dateien besser, da man dadran sonst schwieriger was ändern kann.
    Die Einstellungen wären, denke ich mal, in einer Datenbank besser aufgehoben.


    Welche Daten soll das Installationsscript denn hernehmen?

  • starhunter: schon gelesen .. nicht umbedingt das was ich mir drunter vorstelle.


    Sören: Datenbankinformationen (import und export funktion ist dort drinne für umzüge).. Dateistruktur kann über das installationsscript verändert werden (uploads, downloads, private dateien) Hauptsächlich halt seitenstrukturelle dinge ... (installationsscript ist so geschrieben das es halt auch die administration beherbergt sollten bestimmte informationen {db verbindungsdaten ect.} nicht vorhanden sein geht die installation auf ... ansonsten die administration) ...


    hmm .. ja einstellungen in der datenbank templates in dateien ... das dachte ich mir auch so ..


    Jetzt gehen wir mal an den praktischen teil ..


    Früher ... hab ich in meiner index den hauptsächlichen html teil gehabt
    Und per get und include den rest (halt den vordefinierten inhalt) einfach eingebunden.


    Nun habe ich aber keine statische index mehr .. sondern einen funktionsaufruf.


    PHP
    <span class="syntaxdefault"><br /></span><span class="syntaxkeyword"><?</span><span class="syntaxdefault">php<br />session_start</span><span class="syntaxkeyword">();<br />@require_once(</span><span class="syntaxstring">'functions/controler.php'</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$postarray </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">array_merge</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$getarray </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">array_merge</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">);<br />foreach (</span><span class="syntaxdefault">$getarray </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$varx </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$val</span><span class="syntaxkeyword">)  {<br />    </span><span class="syntaxdefault">$getarray</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$varx</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/[^a-z0-9 \\/?=&]/Usi'</span><span class="syntaxkeyword">,</span><span class="syntaxstring">''</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$val</span><span class="syntaxkeyword">);<br />}<br /></span><span class="syntaxdefault">$output </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">controler</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$postarray</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$getarray</span><span class="syntaxkeyword">);<br />echo </span><span class="syntaxdefault">$output</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault"></span>


    Also ... wie umsetzen ? .. ich brauch nen standart template das dan den entsprechenden teil läd .. somit würd ich mich einiges ersparen.


    Hat jemand vorschläge dazu ?

  • Ein Standardtemplate, welches den entsprechenden Teil lädt, find ich gut.


    Das Standardtemplate könnte dann z.B. den normalen Aufbau der Seite mit header, Navigation, Footer, etc. enthalten.
    Als Inhalt kann man dann irgendetwas schreiben, wie "useTemplate:xyz", wobei xyz dann auf einen Ordner zeigt, in dem von der Template Engine das gerade passende rausgesucht wird.


    Nur mal so meine Idee, ist natürlich sehr vage formuliert, aber vielleicht hilft dir das ja trotzdem.

  • so hab ich das auch gedacht ... problem ist


    controler -> läd standart template und speichert die html ausgabe in einem string (standart template)
    controler-> läd nun den content bereich und soll den ins standarttemplate einbinden...



    Wie das content template ins standart template einbinden ... also mein controler macht da mucken als fehlermeldungen oder weiße seiten ...
    Ideen ... ?


    achsoo controler code (alte version )

    PHP
    <span class="syntaxdefault"><br /></span><span class="syntaxkeyword">function </span><span class="syntaxdefault">controler</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$postarray</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$getarray</span><span class="syntaxkeyword">) {<br />  </span><span class="syntaxcomment">//------------------------------------------------//<br />  //error reporting abschalten bei produtionsbetrieb<br />  //error_reporting(0);<br />  //--------------------------------------------//<br />  </span><span class="syntaxkeyword">include_once(</span><span class="syntaxstring">'config/config.php'</span><span class="syntaxkeyword">);<br />  if(</span><span class="syntaxdefault">MYSQLHOST </span><span class="syntaxkeyword">=== </span><span class="syntaxdefault">0 </span><span class="syntaxkeyword">XOR </span><span class="syntaxdefault">MYSQLUSER </span><span class="syntaxkeyword">=== </span><span class="syntaxdefault">0 </span><span class="syntaxkeyword">XOR </span><span class="syntaxdefault">MYSQLPASS </span><span class="syntaxkeyword">=== </span><span class="syntaxdefault">0 </span><span class="syntaxkeyword">XOR </span><span class="syntaxdefault">MYSQLNAME</span><span class="syntaxkeyword">===</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">) {<br />    return </span><span class="syntaxstring">'Sorry but page is not available at this moment, Try later please.'</span><span class="syntaxkeyword">;<br />  } else {<br />  @include_once(</span><span class="syntaxstring">'functions/functMysql.php'</span><span class="syntaxkeyword">);<br />  </span><span class="syntaxdefault">$con </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mysqlCon</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">MYSQLHOST</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">MYSQLUSER</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">MYSQLPASS</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">MYSQLNAME</span><span class="syntaxkeyword">);<br />  </span><span class="syntaxdefault">$getarr </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">array_map</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"mysql_real_escape_string"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$getarray</span><span class="syntaxkeyword">);<br />  </span><span class="syntaxdefault">$postarr </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">array_map</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"mysql_real_escape_string"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$postarray</span><span class="syntaxkeyword">);<br />  </span><span class="syntaxcomment">//zuweisung der view<br />  </span><span class="syntaxdefault">$view </span><span class="syntaxkeyword">= empty(</span><span class="syntaxdefault">$getarr</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'p'</span><span class="syntaxkeyword">])?</span><span class="syntaxstring">'home'</span><span class="syntaxkeyword">:</span><span class="syntaxdefault">$getarr</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'p'</span><span class="syntaxkeyword">];<br />  </span><span class="syntaxcomment">//----------------------------------//<br />  //überarbeitete version<br />  //session security check das rang nicht mehr als 1 zeichen und nur vom typ int ist.<br />  </span><span class="syntaxkeyword">if((</span><span class="syntaxdefault">strlen</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'rang'</span><span class="syntaxkeyword">])></span><span class="syntaxdefault">1</span><span class="syntaxkeyword">) AND (!</span><span class="syntaxdefault">is_int</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'rang'</span><span class="syntaxkeyword">]))) {<br />   unset(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'rang'</span><span class="syntaxkeyword">]); </span><span class="syntaxcomment">#drastisch aber nötig (sicherer?!)<br />  </span><span class="syntaxkeyword">}<br /><br />  </span><span class="syntaxcomment">//prüfung der erlaubten seiten.<br />  </span><span class="syntaxdefault">$allow </span><span class="syntaxkeyword">= array(</span><span class="syntaxstring">'home'</span><span class="syntaxkeyword">,</span><span class="syntaxstring">'gb'</span><span class="syntaxkeyword">,</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">,</span><span class="syntaxstring">'kontakt'</span><span class="syntaxkeyword">,</span><span class="syntaxstring">'impressum'</span><span class="syntaxkeyword">);</span><span class="syntaxcomment">#ohne login (öffentlich)<br />    </span><span class="syntaxkeyword">if(!empty(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'rang'</span><span class="syntaxkeyword">])) {<br />      </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'member'</span><span class="syntaxkeyword">;<br />      </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'forum'</span><span class="syntaxkeyword">;<br />      </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'pm'</span><span class="syntaxkeyword">;<br />      </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'profile'</span><span class="syntaxkeyword">;<br />      </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'chat'</span><span class="syntaxkeyword">;<br />      </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'logout'</span><span class="syntaxkeyword">;<br />      </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'galerie'</span><span class="syntaxkeyword">;<br />      </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'uploads'</span><span class="syntaxkeyword">;<br />      </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'katview'</span><span class="syntaxkeyword">;<br />      </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'beitrag'</span><span class="syntaxkeyword">;<br />      </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'download'</span><span class="syntaxkeyword">;<br />      </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'publist'</span><span class="syntaxkeyword">;<br />      </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'answer'</span><span class="syntaxkeyword">;<br />      </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'usercp'</span><span class="syntaxkeyword">;<br />      </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'profile'</span><span class="syntaxkeyword">;<br />      </span><span class="syntaxcomment">//userseiten (member keine administration)<br />    </span><span class="syntaxkeyword">switch(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'rang'</span><span class="syntaxkeyword">]) {<br />      case </span><span class="syntaxdefault">4</span><span class="syntaxkeyword">:           </span><span class="syntaxcomment">#admin<br />        </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'admin'</span><span class="syntaxkeyword">;<br />        </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'moderator'</span><span class="syntaxkeyword">;<br />        </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'operator'</span><span class="syntaxkeyword">;<br />      break;<br />      case </span><span class="syntaxdefault">3</span><span class="syntaxkeyword">:           </span><span class="syntaxcomment">#moderatoren<br />        </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'moderator'</span><span class="syntaxkeyword">;<br />       break;<br />      case </span><span class="syntaxdefault">2</span><span class="syntaxkeyword">:           </span><span class="syntaxcomment">#operator<br />        </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'operator'</span><span class="syntaxkeyword">;<br />        </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=</span><span class="syntaxstring">'moderator'</span><span class="syntaxkeyword">;<br />       break;<br />      case </span><span class="syntaxdefault">1</span><span class="syntaxkeyword">:          </span><span class="syntaxcomment">#user profiledit<br />        </span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">[]=;<br />       break;<br />    }<br /><br /> }<br /><br /> if(</span><span class="syntaxdefault">in_array</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$view</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$allow</span><span class="syntaxkeyword">)){<br />   </span><span class="syntaxcomment">//relative pfadangaben<br />   </span><span class="syntaxdefault">$viewtpl </span><span class="syntaxkeyword">= </span><span class="syntaxstring">'templates/'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$view</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'.php'</span><span class="syntaxkeyword">;<br />    if (</span><span class="syntaxdefault">file_exists</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$viewtpl</span><span class="syntaxkeyword">)){<br />     </span><span class="syntaxdefault">ob_start</span><span class="syntaxkeyword">();<br />     </span><span class="syntaxcomment">// Das Template-File wird eingebunden und dessen Ausgabe in<br />     // $output gespeichert.<br />     </span><span class="syntaxkeyword">include </span><span class="syntaxdefault">$viewtpl</span><span class="syntaxkeyword">;<br />     </span><span class="syntaxdefault">$output </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">ob_get_contents</span><span class="syntaxkeyword">();<br />     </span><span class="syntaxdefault">ob_end_clean</span><span class="syntaxkeyword">();<br />     </span><span class="syntaxcomment">// Output zurückgeben.<br />     //db close (gegen persistente verbindungen)<br />     </span><span class="syntaxkeyword">if (</span><span class="syntaxdefault">is_bool</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$con</span><span class="syntaxkeyword">))  </span><span class="syntaxdefault">mysql_close</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$con</span><span class="syntaxkeyword">);<br />    return </span><span class="syntaxdefault">$output</span><span class="syntaxkeyword">;<br /><br />    }else {<br />    </span><span class="syntaxcomment">// Template-File existiert nicht-> Fehlermeldung.<br />    </span><span class="syntaxkeyword">return </span><span class="syntaxstring">'could not find template'</span><span class="syntaxkeyword">;<br />   }<br /> } else {<br />    </span><span class="syntaxcomment">//rang nicht gesetzt oder ausreichend<br />    </span><span class="syntaxkeyword">return </span><span class="syntaxstring">'You dont have the permission to acces this page'</span><span class="syntaxkeyword">;<br /> }<br />}<br />}<br /> </span><span class="syntaxdefault"></span>

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!