PHP und .htaccess: Aus statisch, mach dynamisch |
Donnerstag, 18. Juni 2009
|
||
Mit zwei kleinen Dateien auf dem Webspace kann man aus einer Website die z.B. auf statischen HTML-Dateien basiert, die Dynamik und Flexibilität von PHP rausholen. Hier erfahrt Ihr wie.
Zwei Dateien. Eine PHP- und eine htaccess-Datei. Mehr ist nicht nötig um die Funktionalität einer Website zu erhöhen und dadurch mehr Flexibilität und Dynamik in die Seite zu bringen. Das Grundprinzip Jede ASCII-Datei (also z.B. PHP, HTML, XML, etc.) auf dem Webspace wird bevor sie an den Browser des Besuchers geschickt wird vorher durch einen zentralen Kanal geschickt, in dem wir die Datei nach Belieben ändern können. Die Vorteile Durch diesen Tunnel ist es praktisch egal, wie die Website vorher aufgebaut war, wir können sie an einer Stelle mit immer dem gleichen PHP-Quellcode bearbeiten. Das spart Zeit und schafft neue Möglichkeiten. Zur Praxis Als erstes brauchen wir eine .htaccess Datei in der steht, dass alle Anfragen in eine bestimmte PHP-Datei geleitet werden. Das sieht dann z.B. so aus. .htaccess Datei: RewriteEngine On Die .htaccess Datei und die tunnel.php müssen bei diesem Beispiel im Document-Root-Verzeichnis der Internetseite liegen. Diese Regel besagt nun, dass jede Datei, die mit .htm endet auf die tunnel.php Datei weitergeleitet wird. Wir erhalten dann erst mal eine weiße Seite, da in der tunnel.php ja noch nichts steht und diese leer ist. tunnel.php Datei: <?php So sieht das Herz unseres neuen Features aus. Im Wesentlichen wird hier die eigentlich aufgerufene Datei includiert (also eingebunden). Anstatt die eingebundene Datei jedoch direkt auszugeben, was der Webserver bei einem normalen Aufruf machen würde, leeren wir den PHP-Ausgabepuffer und schreiben dessen Inhalt in eine Variable. In diesem Beispiel die Variable $inhalte. Erst bei dem letzten Befehl "echo $inhalte;" geben wir dann die vorher gespeicherten Inhalte aus. Das bedeutet, dass wir zwischen Pufferung und Ausgabe alles mit dem Quellcode machen können, was wir wollen. Wir sind hier in PHP, wie können also, da ja noch keine Ausgabe gemacht wurde, auch noch den HTTP-Header ändern oder andere PHP-Dateien includieren, die weitere Funktionen aufrufen. Praktisches Anwendungsgebiet Ich habe diese Lösung entwickelt und verwendet als ich für eine statische Website ein "Mini"-CMS geschrieben habe. Man kann sich anmelden und erhält dann eine Sitzungs-ID. Ist die ID gültig wird die Website mit zusätzlichen Funktionen angezeigt um deren Inhalte ändern zu können. Und die Basis für das komplette CMS sind die beiden oben erläuterten Dateien. Recht einfach, was? :) Kurze Anmerkung zur tunnel.php Eine Sache in der Datei will ich noch kurz erklären. if(substr($_SERVER[REQUEST_URI],-1) == "/") { $_SERVER[REQUEST_URI] = "/index.htm"; } Basis des Include ist die REQUEST_URI - also das was im Browser hinter der Domain steht. Gibt man aber nur die Domain ein ist der REQUEST_URI nur ein Slash (/). Ein Include in PHP benötigt aber eine gültig und physisch vorhandene Datei, das wäre also das "Directory-File", meist index.htm, index.html oder index.php. Nur Slash (/) ist also keine vorhandene Datei, daher die IF-Abfrage die aus einem / ein /index.htm macht. Fazit Ich hatte schon in zwei vollkommen unterschiedlichen Anwendungen verwendung für diesen Trick, weshalb ich ihn nun auch veröffentliche. Der Artikel ist keine Komplett-Lösung, aber eine Anregung. Es gibt natürlich noch einfachere Möglichkeiten in einer HTML-Datei PHP-Code ausführbar zu machen, jedoch ist dies hier etwas komplexer und bietet noch mehr Möglichkeiten, als reiner PHP-Code. Natürlich muss auf dem Webserver PHP und htaccess vorhanden und aktiviert sein. Dies ist aber schon bei günstigen Angeboten meist der Fall. Für Fragen oder Anregungen stehe ich Euch wie immer in den Kommentaren oder per Mail gerne zur Verfügung. Kommentare (4) |
||
Letzte Aktualisierung ( Samstag, 20. Juni 2009 ) |
< Zurück | Weiter > |
---|