EVAL FUNKTION ?
-
Der Fehler liegt nicht am Skript. Dein Browser(bestimmt der IE - der Mozilla ist so blöd nicht) legt die Seite in seinem Zwischenspeicher ab, und läd sie aus dem Zwischenspeicher und nicht neu.
Es gibt aber einen Headerbefehl, der das unterbindet. Da musst du mal bei Google suchen.Edit:
Ich würde die Templates nicht so einlesen wie du das machst. Das ist nämlich relativ lahm. fread() währe bedeutend schneller. (Ich habs mit einer 700mb großen Textdatei ausprobiert: implode(file()): timeout; fread(): 3sek;)
-
@ Wenn du so gut suchen könntest, wie du kopieren kannst, hättest du mal auf die Website des Urhebers geschaut
Ja natürlich habe ich das kopiert aber ich wollte es doch eben für mich anpassen !
@ Der Fehler liegt nicht am Skript. Dein Browser(bestimmt der IE - der Mozilla ist so blöd nicht) legt die Seite in seinem Zwischenspeicher ab, und läd sie aus dem Zwischenspeicher und nicht neu.
Nein leider nicht! Ich benutze auch nicht den IE sondern Safari auf Mac OS X - und dann habe ich es auf einem anderen Computer ausprobiert und da taucht der gleiche Fehler auf --> ich habe auch keinen ProxyServer davor !!
-
Ich verstehe jetzt nichts mehr!
index.php:
<?PHP
include("includes/startseite.php");
include("templates/main.php");
?>includes/startseite.php:
<?PHP
$TITEL = "Hallo";
?>templates/main.php:
<?PHP
echo('<html><head><titel>'.$TITEL.'</titel></head></html>');
?>UND trotzdem steht in der variablen $TITEL noch der titel von gestern abend obwohl ich alles gelöscht habe ... sogar auf anderen computern in diesem netz. habe mir auch schon einen neue ip geben lassen.
kann das was mit dem webserver zu tun haben ?
-
So ich habs. Was für ein Dicker Dummer Fehler. Lag an etwas anderem.
Wen es interessiert hier ist eine Lösung:
<?PHP if($site == "startseite") include("includes/startseite.php"); if($site == "kontakt") include("includes/angebote.php"); else include("includes/startseite.php"); function GetTemplate($TplFile) { return str_replace("\"","\\\"",implode("",file($TplFile))); } function DoOutput($TplFile) { echo $TplFile; } eval ("DoOutput(\"".GetTemplate("templates/Main.tpl")."\");"); ?>
-- Über Verbesserungen würde ich micht natürlich freuen.
Grüße.
-
DieLösung(Man^2) schrieb:
<?PHP if($site == "startseite") include("includes/startseite.php"); if($site == "kontakt") include("includes/angebote.php"); else include("includes/startseite.php"); ?>
Dein if-else-syntax ist sehr gefährlich! In diesem Fall kannst du dir auf jeden Fall das erste if sparen
Lösung: entweder mit elseif oder mit verschachtelten if-else
(ich würde dir auch { } empfehlen, um die Sachen eindeutig zuzuordnen - ist bei komplexem Code viel übersichtlicher)
Hier würde ich aber ein switch bevorzugen:<?php switch($site) { case 'startseite': include("includes/startseite.php"); break; case 'kontakt': include("includes/angebote.php"); break; default: include("includes/startseite.php"); break; } ?>
Falls dein $site direkt aus dem Wert der URL stammt (register_globals uaf on): Nimm lieber $_GET['site'] (ab PHP >= 4.1.0) da register_globals bei neuen Versionen und bei vielen WebServern defaultmäßig auf off eingestellt ist
-
Hallo.
Wen es interessiert ich habe es jetzt so gemacht:<?PHP if(file_exists("includes/".$msite.".php")) { include("includes/".$msite.".php"); } else { include("includes/startseite.php); } function GetTemplate($TplFile) { return str_replace("\"","\\\"",implode("",file($TplFile))); } function DoOutput($TplFile) { echo $TplFile; } eval ("DoOutput(\"".GetTemplate("templates/20030810.tpl")."\");"); ?>
Er meldet mir nun zwar den Fehler:
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in index.php on line 14
Aber ich denke das bekomme ich auch nor hin!
Über weitere Kommentare würde ich mich freuen ....
Grüße.
-
PS:
Wenn das alles so funktioniert werde ich mich mit dem Komantar von Lutz beschäftigen:Edit:
Ich würde die Templates nicht so einlesen wie du das machst. Das ist nämlich relativ lahm. fread() währe bedeutend schneller. (Ich habs mit einer 700mb großen Textdatei ausprobiert: implode(file()): timeout; fread(): 3sek;)Grüsse.
-
result=eval('return "'.$buffer.'";');
Gruß Jens
-
Ich habe das ja jetzt mit dem include("includes/startseite.php") Befehl gelöst!
Ich benutze Ihn in vielen Dateien um mehr Übersicht zu haben und um später einfacher (globaler) Änderungen vornehmen zu können.
Wie sieht es denn mit der Geschwindigkeit aus. Ist das include(); ok oder langsam ?
-
Das ist schon ok