Tom: include() böse[tm] u.a.?

Beitrag lesen

Hello,

In eine dynamische Seite $HOME/www/foo/bar.php kann ich sie einbinden mit
  <?php include('../Includes/fuss.shtml'); ?>

Erste Frage: Wie kann ich den Pfad absolut angeben?

Eigentlich gar nicht.
Du könntest aber einen include_Path bei PHP einstellen, der dann automatisch gewählt wird, wenn die Datei im aktuellen Verzeichnis nicht zu finden ist.

Es gibt noch mehr Krückenlösungen...

Zweite Frage: Warum kann ich die Endung ".shtml" nicht weglassen?

Da solltest Du besser nachfragen, wieso Du sie bei SSI nicht angeben musst.
Das ist recht ungewöhnlich.
Das Include bei PHP findet auf der Dateiebene außerhalb des Bereiches von Apache statt. Da gibt es also auch keine indexes.

Dritte Frage: Ist include() böse[tm]? Immer? Warum? Wann nicht? Ist es hier böse?

Jein. Kommt doch ganz auf Dich an. Es genauso gut oder böse wie alle anderen Executer auch:

  • system()
  • exec()
  • eval()
  • ...

Alle Befehle, die die Kontrolle (übergangsweise) an den eingebundenen Befehlsstrom abgeben, sind Sicherheitslücken.

Ich kann sie ja nicht mit
  <?php readfile('../Includes/fuss.shtml'); ?>
einbinden, da dann weder der SSI- noch der PHP-Code in dieser Datei ausgeführt werden.

Das kommt auf Dein Konzept an.
Ich hoffe, dass Du hier nicht in zwei Sätzen eine Gesamtabhandlung über CM und die möglichen Methoden erwartest. Das beste wird immer sein, mit der strikten Trennung von Datenmanipulation und Ausgabe zu beginnen. dann kommt man irgendwann ganz automatisch zu einer (relativ sicheren) Template-Engine ohne Lücken.

Dazu die vierte Frage (oder ist es schon die achte?): Wird der PHP-Code ausgeführt, kommt beim Client noch der SSI-Code an:
  <!--#baz -->
Sollte nicht weiter stören, ist ja ein Kommentar. Wird der SSI-Code ausgeführt, kommt beim Client noch der PHP-Code an:
  <?php quz ?>
Stört das im Quelltext? Der Validator sagt, es wäre immer noch valides XHTML 1.0.

Das würde mich als Programmierer mehr stören, als es den Browser stört. Warum auf die Finger gucken lassen, wie die Seiten im Hintergrund zusammengesetzt werden?

BTW: könntet Ihr alle es bitte unterlassen, diese Code-Kacke einzubauen, und dann die Syntax nicht richtig zu verwenden?

Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau