phpbar.de logo

Mailinglisten-Archive

[php] Dateien einlesen, Code ausführen und Ausgeben

[php] Dateien einlesen, Code ausführen und Ausgeben

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Die Jul 25 10:40:44 CEST 2006


Hi Sven,

Am Dienstag, 25. Juli 2006 10:11 schrieb Sven Geßner:
> Leider bin ich mehr oder weniger am Anfang der Entwicklung, also kann
> ich dazu recht wenig aussagen. Ich habe nur teilweise fertige
> Programme die ich einbinden möchte. Gästebuch, blog, Galerie...
> Daher wollte ich auch keine fertige Lösung.

wenn Du in diversen Bereichen ohnehin schon fertige Lösungen einsetzt, 
dann kannst Du auch noch eine fertiges Templatesystem einsetzen. :-)


> >> Wie kann ich das nochmachen.. Vielleicht mit "fopen" usw.
> >> aber wie kann ich dann den Code ausführen??
> >
> >Die Codeausführung ließe sich mit eval() erreichen.
>
> Ich dachte eval() geht nicht im Safe_mode_on betrieb..??

Nein, ich vermute, Du verwechselst es mit exec(). eval() unterliegt in 
den Standardeinstellungen keinen Restriktionen durch SAFE_MODE:

http://www.php.net/manual/en/features.safe-mode.functions.php


> >  // Datei holen
> >  $sDateiInhalt = file_get_contents('include.inc');
> >  // Inhalt ausführen und ausgeben
> >  eval($sDateiInhalt);
>
> Geht das auch wenn ich html-code und php-code in der datei habe?
> Wie muss ich den php-code kennzeichnen?
> ich habe php 5.14 im webspace

Ja, das geht auch, wenn in der Datei HTML-Code ist. eval() ist aber 
recht hinterhältig. Lese Dir mal die Seite im Online-Handbuch durch:

	http://de.php.net/manual/en/function.eval.php

Ich nenne Dir hier absichtlich die englische Seite, weil diese 
ausführlicher ist, als die deutsche und dabei einige wichtige 
zusätzliche Informationen enthält!

Kurz gesagt: Ich würde eval() hier nicht einsetzen. Der Sinn dieser 
Lösung ist auch nicht wirklich gegeben, weil es im Endeffekt in Deinem 
Fall einem include() gleich kommt. Wozu also der Umweg... :-) War 
vorhin nicht ganz zuende gedacht von mir... ;-)


> >3. Trennung von Programm und Ausgabe auch auf Dateiebene, d.h. die
> >Verwendung von Templates. Eine fertige Lösung hierfür wäre das
> >Templatesystem Smarty.
>
> Vielleicht stelle ich mir das zu schwer vor, ein System zu nutzen.
> Ich werde mich mal daran wagen demnächst...

Ich programmiere meine Website gerade neu und setze dabei jetzt auch 
Smarty ein. Das ist wirklich sehr einfach. Habe keine Angst. Du 
solltest halt zunächst einmal das Handbuch gründlich lesen. Die 
Einarbeitungszeit liegt bei wenigen Stunden. Danach kannst Du 
eigentlich direkt loslegen und Dich Stück für Stück vorarbeiten.


> >> Ich möchte keine fertige Lösung nutzen.
> >
> >Schade. Eigentlich solltest Du Dir einfach mal Smarty ansehen. Sehr
> >einfach zu installieren. Sehr einfach zu benutzen, gleichzeitig aber
> >sehr mächtig, d.h. Du kannst klein anfangen und immer mehr wachsen.
> > :-)
>
> Ich habe dabei nur die Befürchtung wenn ich es nutze bzw. erstmal
> verstehe, das ich mich zuweit von der Hand Programmierung weg bewege
> und den Lerneffekt nicht mehr habe...

Das kann ich sehr gut nachvollziehen. Das habe ich zunächst auch so 
gemacht. Allerdings muß ich Dir sagen, daß Smarty so genial einfach und 
gleichzeitig genial mächtig ist, daß ich mich im Nachhinein frage, 
warum ich das nicht schon seit 4 Jahren verwende... ;-)

Es nimmt Dir auch nicht viel von der Handprogrammierung ab. Es ist ja 
"nur" die Template Engine. Die Daten für das Template mußt Du 
zusammenstellen, das Template mußt Du bauen etc. Smarty übernimmt für 
Dich nur, die Daten in das Template einzubauen. Dabei gibt es noch 
einige nette Dinge wie ausgefeiltes Caching etc. Also wirklich gut. 
Wenn Du Smarty einsetzt, kannst Du Dich auf die wichtigen und 
inhaltlichen Dinge Deiner Anwendung konzentrieren und mußt nicht noch 
ein Templatesystem basteln, welches dann immer wieder 
Unzulänglichkeiten aufweist, die Du dann wieder selbst beheben mußt.

Also mein Tip: Guck Dir vorher Smarty einfach mal an. Probier es selbst 
aus. Dann kannst Du immer noch entscheiden, daß Du es selbst machen 
willst. Nachdem ich Smarty ausprobiert habe, habe ich mich allerdings 
geärgert, daß ich das nicht schon früher getan habe und jahrelang mit 
meiner eigenen halbgaren Lösung gewerkelt habe. :-)


Viele Grüße

Lutz

php::bar PHP Wiki   -   Listenarchive