Seite 1 von 1

php-code durch eine templatedatei aus anderer datei auslesen

Verfasst: 03.11.2006 22:56
von howie1
hi,

ich möchte template entwickeln, das sich in abhängigkeit von der gewählten schaltfläche den content aus einer datei holt und ausgibt. nur am rande, ich arbeite hier mit dem get-befehl. das auslesen funktioniert wunderbar. in der externen datei ist jedoch ausser html-code auch php-code. der html-code wird ausgegeben, der php-code nicht.

hat jemand eine idee, wo mien denkfehler ist? ich glaube der text wird direckt vom browser ausgegeben und geht nicht durch den befehlsinterpreter. was kann ich tun?

<?php
// welche schaltfläche wird gedrückt - der inhalt der jeweiligen datei wird ausgegeben

if (isset ($_GET["select"])){
$datei = "./content/".$_GET[select].".txt";
$fp = fopen ("$datei", "r");
$fsize = filesize ($datei);
$content = fread ($fp, $fsize); //htmlspecialchars()
echo $content;
fclose ($fp);
} else{
include ("./content/HOME");
}
?>

danke gruss howie
------------------------------------------------------------------------------
note: php5; 1+1 vserver

Verfasst: 04.11.2006 08:00
von killerbees19
In einer Templatedatei kannst du kein PHP nutzen. Denn die Templatedatei wird von phpBB geladen und ersetzt.

In der Templatedatei kommen solche Dinge vor: z.B. {L_MEMBERLIST}
Wenn du dann in der jewiligen PHP-Datei nachschaust, wirst du sehen, dass es dort definiert ist.

Lesestoff:
Template-System von phpBB
Template-Syntax von phpBB


MfG Christian

Verfasst: 04.11.2006 08:23
von howie1
@killerbees19

danke für deine antwort. hab grad selbst eine lösung gefunden.

die lösung war simpel.
da ich mit fread() die ext. datei ausgelesen habe wurde der klartext im browser wiedergegeben, so wie ich schon dachte. der html-code konnte normal vom browser dargestellt werden, den php-code hat einfach ignoriert, weil er das nicht kann. der hätte erst vom webserver in html-code interpretiert werden müssen.

einfach die fopen()-und dateiauslese-schnodder weglassen, und stattdessen

include ($datei);

verwenden...! dann wirds nochmal durch den webserver verdaut und ordentlich ausgegeben.

danke
gruss howie