d4f
Kaffee? Wo?
Hier ein kurzes Script um ein "umgedrehtes require" zu realisieren mit welchem die Ausgabedatei in eine andere reingeladen werden kann:
Einziger Haken: man muss index.php?page=<SEITE> aufrufen und <SEITE> muss im gleichen Ordner liegen sowie die Datei-Endung .htm haben (was aber weiterhin PHP-Code in der Datei erlaubt)
Zumindest erstere Einschraenkung liesse sich mittels htaccess einfach wieder in eine "SEO" URL umbiegen.
Anwendungsbeispiel:
template.htm
main.htm
Im groben fuehrt die index.php die main.htm aus und erfaehrt dass diese eigentlich ein Teil der template.htm sein soll. Der Inhalt der Datei wird somit in der Variable $CONTENT gespeichert und die template.htm ausgefuehrt. Diese gibt den Code dann aus.
Zu beachten ist dass die template.htm in der main.htm deklarierte Variablen, Funktionen und Klassen benutzen kann, somit beispielweise im Header der Benutzername angezeigt werden kann.
template.htm kann natuerlich auch wieder auf andere Dateien verweisen aber ich will das Beispiel nicht verkomplizieren
Feedback erwuenscht.
Code:
<?php
define("PAGE_DEFAULT",'main');
define("BASE_DIR",dirname(__FILE__));
//Find requested page
$frame_page = isset($_GET['page']) ? $_GET['page'] : PAGE_DEFAULT;
$frame_page = str_replace(array("..",".","/","\\"),"",$frame_page);
//Check if page exists
$frame_page = ($frame_page != 'index' && is_readable(BASE_DIR.'/'.$frame_page.'.htm')) ? $frame_page : PAGE_DEFAULT;
//Load page
$frame_dependency = $frame_page.'.htm';
while(!is_int($frame_dependency)) {
$SHOWDEP = true;
$frame_dependency_curr = $frame_dependency;
$frame_dependency = require BASE_DIR.'/'.$frame_dependency_curr;
ob_start();
$SHOWDEP = false;
require BASE_DIR.'/'.$frame_dependency_curr;
$CONTENT = ob_get_contents();
ob_end_clean();
}
?>
Einziger Haken: man muss index.php?page=<SEITE> aufrufen und <SEITE> muss im gleichen Ordner liegen sowie die Datei-Endung .htm haben (was aber weiterhin PHP-Code in der Datei erlaubt)
Zumindest erstere Einschraenkung liesse sich mittels htaccess einfach wieder in eine "SEO" URL umbiegen.
Anwendungsbeispiel:
template.htm
Code:
<html>
<body>
[HIER-HEADER-EINFUEGEN] <!-- DAS HIER IST KEIN TEMPLATE-ELEMENT sondern Platzfueller! Das Template benutzt ausschliesslich PHP! -->
<div id="content">
<?php echo $CONTENT; ?>
</div>
</body>
</html>
main.htm
Code:
<?php if($SHOWDEP) return 'template.htm'; ?>
<b>Hallo</b> :D
Im groben fuehrt die index.php die main.htm aus und erfaehrt dass diese eigentlich ein Teil der template.htm sein soll. Der Inhalt der Datei wird somit in der Variable $CONTENT gespeichert und die template.htm ausgefuehrt. Diese gibt den Code dann aus.
Zu beachten ist dass die template.htm in der main.htm deklarierte Variablen, Funktionen und Klassen benutzen kann, somit beispielweise im Header der Benutzername angezeigt werden kann.
template.htm kann natuerlich auch wieder auf andere Dateien verweisen aber ich will das Beispiel nicht verkomplizieren
Feedback erwuenscht.
Last edited by a moderator: