Geparste Seite erkennt kein PHP mehr ...

exitboy

Erfahrenes Mitglied
Hallo,

ich habe zwei Seiten erstellt:

Eine ohne Parsing System (also ne reine PHP Datei), hier erkennt er meine echo Anweisungen.

Die gleiche Datei wird als Vorlage genommen und in diese werden jetzt über das Parsing System Variablen aus meiner Datenbank eingelesen und ergänzen die Vorlagedatei (das Parsing funktioniert.

Nur die PHP Anweisungen in der Vorlagedatei, werden ignoriert ... warum?

die Klasse:
Code:
<?php
 //Klasse zum Parsen von HTML Templates

 Class parser
 {
  var $template;
  var $temp_content;

  function parser($template, $var_array)
  {
   $this->template = $template;
   $this->temp_content = file($this->template);
   $parsed = $this->rplc($var_array);
   echo(implode("", $this->temp_content));
  }

  function rplc($var_array)
  {
   foreach($var_array as $key => $value)
   {
    //$regex[var_name] : {VARIABLE}
    $regex['var_name'] = "#{[[:space:]]*?(".strtoupper($key)."){1,}?[[:space:]]*?}#si";
    $this->temp_content = preg_replace($regex['var_name'], $value, $this->temp_content);
   }
  }
 }
?>

und die Index.php:

Code:
<?php
 //Script zum zeilenweisen Parsen von HTML Templates


 //Einbinden der Template Klasse
 include("class_tpl_parser_lite.inc.php");

 //Uservariablen f&uuml;r den Datenbankzugang
 $mysql["host"] = "localhost";
 $mysql["user"] = "xxx";
 $mysql["password"] = "xxx";
 $mysql["database"] = "xxx";

 //Definition der ID, Wenn keine ID &uuml;bergeben wurde
 //nimmt das System die Standard ID
 if(!isset($_GET["id"])) $id = 1;
 if(!isset($id)) $id = $_GET["id"];

 //Datenbankverbindung aufbauen und Datenbank ausw&auml;hlen
 mysql_connect($mysql["host"],$mysql["user"],$mysql["password"]);
 mysql_select_db($mysql["database"]);

 //Datenbankabfrage zusammenstellen
 $sql = "SELECT * FROM doc_desc, doc_text "
      . "WHERE doc_desc.c_id = doc_text.id AND doc_text.id = $id";

 //Datenbank wird abgefragt
 $_result = mysql_query($sql);
 //Das Ergebniss wird in dem Feld ($_array) gespeichert
 $_array = mysql_fetch_assoc($_result);

 //Definition der Variablen durch die die Platzhalter
 //ersetzt werden.
 $title    = $_array["title"];
 $css      = $_array["css"];
 $template = $_array["template"];
 $text     = $_array["text"];

 //Array mit den Platzhaltern (Keys) und den Inhalten.
 $var_array = array("TITLE" => $title,
                    "CSS" => $css,
                    "TEXT" => $text);

 //Initialisierung der Klasse und Parsen des Templates
 $tpl = new parser($template, $var_array);
?>

die Vorlagedatei, in die aus der Datenbank geparst wird:

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>{TITLE}</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="{CSS}">
</head>
<body>
<?php echo(date("d.m.Y - G:i")." Uhr");  ?> <!-- FUNKTIONIERT NICHT -->
</body> ...
 
Kann mir vielleicht jemand diese Eval Funktion erklären? Ich komm mit der definition nicht so recht klar ...

Da ist das Beispiel gegeben:

Code:
<?php
$string = 'Bierglas';
$name = 'Binding-Lager';
$str = 'Das ist mein $string, voll mit $name.<br>';
echo $str;
eval ("\$str = \"$str\";");
echo $str;
?>

Ergebnis:

Das ist mein $string, voll mit $name.
Das ist mein Bierglas, voll mit Binding-Lager.


wer kann mir diese Zeile übersetzen? Es geht hier bestimmt um Zeichenübersetzung, nur warum ist das notwenig ... warum muss hier eval überhaupt ins Spiel kommen

eval ("\$str = \"$str\";");


Wie wird es genutzt ... da ich jetzt eine gesamte HTML Seite in der SQL Datenbank habe, welche auf einmal ausgelesen werden soll. Was für Bedingungen benötigt Eval da.

Ich würde das einfach so machen:

Code:
<?php eval({TEXT}; ?>
nur das klappt nicht so einfach :)
 
Mhm hab auch kurz mit Eval rumgespielt. Kurz um du speicherst den Quellcode in einer Variablen ab innerhalb der ' ' und eval versucht dann den Quellcode auszuführen innerhalb der ' '.

PHP:
<?php

//Quellcode unseres Programms

$funktion = 'function helloworld(){
                
                        echo "hello World";             

	       }
	     
	       helloworld(); ';

// Eval versucht nun den PHP Code zu übersetzen innerhalb der Variablen
// $funktion
eval($funktion);

?>

Ausgabe Hello World ;)
 
aber ist nicht schon das grundlegende Problem, dass eval garnicht ausgeführt werden kann, da er ja kein PHP umsetzt
 
Zurück