Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PHP für statische Webseiten?

0 views
Skip to first unread message

Edzard Egberts

unread,
Jul 2, 2009, 9:48:41 AM7/2/09
to
Hallo,

ich bin zwar haupts�chlich C++-Entwickler, betreue inzwischen aber
nebenbei ein paar Webseiten (z.B. www.tantec.de). Obwohl CSS ein echter
Fortschritt ist, finde ich es sehr nervend, dass man beispielsweise f�r
die �nderung eines Men�eintrags alle Seiten anfassen muss, die dieses
Men� verwenden - da vermisse ich ein "#include" und die M�glichkeit,
Webseiten aus Modulen aufzubauen. Vom ersten Gedanken, so etwas selber
zu programmieren, bin ich ganz schnell wieder abgekommen, (denn so etwas
*muss* es doch schon geben!) und hier gelandet:

Ist PHP f�r so etwas geeignet und empfehlenswert? Also um eine Website
auseinander zu pfl�cken, zu modularisieren und dann weiter auszubauen?
Auch um z.B. eine Dokumentation in eine Web-Men�struktur zu packen (ohne
Frames verwenden zu m�ssen, l�uft auf "Content-Management" hinaus)?

Immer mit dem Ziel, das ganze Geraffel nicht als PHP, sondern als
statische Webseite zu ver�ffentlichen (daf�r scheint es einen "Crawler"
zu geben)? Oder ist das mit Kanonen auf Spatzen geschossen und ich
�bersehe eine einfache M�glichkeit?

Was meint Ihr?

Ed

Sebastian Wessel

unread,
Jul 2, 2009, 10:03:09 AM7/2/09
to
Edzard Egberts schrieb:
> Obwohl CSS ein echter
> Fortschritt ist, finde ich es sehr nervend, dass man beispielsweise für
> die Änderung eines Menüeintrags alle Seiten anfassen muss, die dieses
> Menü verwenden - da vermisse ich ein "#include" und die Möglichkeit,

<link rel="stylesheet" href="main.css" media="all" />
<link rel="stylesheet" href="menu.css" media="all" />

In das erste alles rein, was in allen Seiten vorkommt, in die zweite nur
das Menu wenn das nur auf manchen Seiten vorkommt und so weiter ...

Oder einfacher: Dein gewünschtes "#include" kommt von der (X)HTML-Seite

Dann gibt es noch die Möglichkeit, dass ich dich nicht richtig
verstanden habe und du das Menü immer wieder einbinden willst. Dafür
gibt es in PHP eine spezielle Möglichkeit: Funktionen.

function menu ()
{
return 'Dies ist das Menü';
}

Oder Du musst mir / uns nochmal erklären, was du wo inkludieren möchtest


MfG
Sebastian Wessel

--
Gästehandtücher ist 'ne Umschreibung für saubere Handtücher
(Loreley Gilmore, Staffel 7, Episode 18)

Klaus Zerwes

unread,
Jul 2, 2009, 10:22:58 AM7/2/09
to

Immer wiederkehrende Elemente kann man mit php recht gut handhaben.
Allerdings musst du dann statt .html-Seiten .php erstellen. "Crawlern"
kann mann mittels mod_rewrite dann noch statische Seiten vorgaukeln.

Was dir auch helfen k�nnte w�ren SSI (Server Side Includes:
http://httpd.apache.org/docs/2.0/howto/ssi.html) oder mod_include
(http://httpd.apache.org/docs/2.0/mod/mod_include.html)

> Was meint Ihr?
>
> Ed

Klaus


--
Klaus Zerwes
http://www.zero-sys.net

Edzard Egberts

unread,
Jul 2, 2009, 10:52:11 AM7/2/09
to
Sebastian Wessel schrieb:
> Edzard Egberts schrieb:

>> da vermisse ich ein
>> "#include" und die Möglichkeit,
>
> <link rel="stylesheet" href="main.css" media="all" />
> <link rel="stylesheet" href="menu.css" media="all" />
>
> In das erste alles rein, was in allen Seiten vorkommt, in die zweite nur
> das Menu wenn das nur auf manchen Seiten vorkommt und so weiter ...
>
> Oder einfacher: Dein gewünschtes "#include" kommt von der (X)HTML-Seite
>
> Dann gibt es noch die Möglichkeit, dass ich dich nicht richtig
> verstanden habe und du das Menü immer wieder einbinden willst.
> Oder Du musst mir / uns nochmal erklären, was du wo inkludieren möchtest

Das konkrete Beispiel sah so aus, dass ich drei Menüblöcke hatte:

<div id="menu">
<ul id= "block_1">
<li> <a href="mb11.html">Block_1_1</a> </li>
<li> <a href="mb12.html">Block_1_2</a> </li>
</ul>
<ul id= "block_2">
<li> <a href="mb21.html">Block_2_1</a> </li>
<li> <a href="mb22.html">Block_2_2</a> </li>
</ul>
<ul id= "block_3">
<li> <a href="mb31.html">Block_3_1</a> </li>
<li> <a href="mb32.html">Block_3_2</a> </li>
</ul>
</div>

Wenn ich die Blöcke als separate Dateien definieren und einfügen könnte,
müsste ich bei Änderung eines Blocks nicht alle Dateien anfassen, die
das Menü verwenden, sondern nur die Dateien, für die sich das
Erscheinungsbild z.B. von "Block_1" ändert:

<div id="menu">
<ul id= "block_1">
<li> <a href="mb11.html">Block_1_1</a> </li>
<li> <a href="mb12.html">Block_1_2</a> </li>
<li> <a href="mb13.html">Block_1_3</a> </li>
</ul>
#include "block_2"
#include "block_3"
</div>

Wie man so etwas mit <link> machen kann, sehe ich nicht und habe auch
noch das Problem, dass ich mich im "Endprodukt" eigentlich auf Befehle
beschränken will, die von den meisten Browsern unterstützt werden -
SELFHTML sieht da für <link> irgendwie nicht so gut aus.

Das hätte ich wirklich erwähnen sollen: Mit dem aktuellen HTML kann man
zwar sehr viel machen (die Verwendung von Frames würde mich z.B. in
Hinsicht Dokumentation weiter bringen), aber ich habe ein paar Browser
ausprobiert und war dann schnell der Meinung, dass man sich doch sehr
einschränken muss, wenn die Website auch mit etwas älteren Browsern
einwandfrei dargestellt werden soll. ;o(

Gruß,

Ed

Edzard Egberts

unread,
Jul 2, 2009, 11:06:14 AM7/2/09
to
Klaus Zerwes schrieb:

> Edzard Egberts wrote:
>> Immer mit dem Ziel, das ganze Geraffel nicht als PHP, sondern als
>> statische Webseite zu ver�ffentlichen (daf�r scheint es einen
>> "Crawler" zu geben)?

> "Crawlern"

> kann mann mittels mod_rewrite dann noch statische Seiten vorgaukeln.

Das ist ein Missverst�ndnis - ich bin beim St�bern auf die Info
gesto�en, dass es einen "Crawler" gibt, der eine PHP-Datei in eine
Statische Webseite umwandelt, es muss sich da um ein bestimmtes Programm
handeln. Leider habe ich den Link nicht gespeichert, sondern das nur zur
Kenntnis genommen.

> Was dir auch helfen k�nnte w�ren SSI (Server Side Includes:
> http://httpd.apache.org/docs/2.0/howto/ssi.html) oder mod_include
> (http://httpd.apache.org/docs/2.0/mod/mod_include.html)

Nein, das ist ein Folgefehler aus dem Missverst�ndnis:

Ich m�chte einfache statische Webseiten mit einem eingeschr�nkten
HTML-Befehlssatz generieren und dabei wiederkehrende Arbeiten, die sich
auf mehrere Seiten auswirken, wie z.B. das Einf�gen eines Men�punktes
oder das Verschieben von Content in ein anderes Verzeichnis (also z.B.
Suchen und Ersetzen mehrerer Links mit diesem Verzeichnis auf mehreren
Seiten), von einem Programm erledigen lassen.

Statt auf existierende Seiten z.B. Suchen-und-Ersetzen-Programme oder
"Makroerweiterungen" loszulassen, erscheint es mir (als Programmierer)
naheliegender, gleich alle Seiten mit einem Programm zu generieren. Mit
irgend einem "Webdesign-Programm" will ich aber nicht arbeiten, weil ich
den Unterschied zur "Handarbeit" inzwischen kenne und Quelltexte sowieso
irgendwie leichter zu bearbeiten finde.

Wenn man Ahnung von der Sache hat, erscheint der Gedanke vielleicht
etwas esoterischer, bis unverst�ndlich? ;o)

Gru�,

Ed

Matthias P. Wuerfl

unread,
Jul 2, 2009, 11:36:36 AM7/2/09
to
Edzard Egberts schrieb:

> ich bin beim St�bern auf die Info
> gesto�en, dass es einen "Crawler" gibt, der eine PHP-Datei in eine
> Statische Webseite umwandelt, es muss sich da um ein bestimmtes Programm
> handeln.

Man kann wget daf�r nehmen. Man setzt auf einem rechner einen Webserver
mit PHP auf, mittels mod_rewrite (bei Apache) macht man sch�ne URLs.
Dann l�sst man das wget drauf los, welches das Resultat speichert,
welches man dann z.B. per FTP auf einem �ffentlichen Webserver
ver�ffentlichen kann.

> Ich m�chte einfache statische Webseiten mit einem eingeschr�nkten
> HTML-Befehlssatz generieren und dabei wiederkehrende Arbeiten, die sich
> auf mehrere Seiten auswirken, wie z.B. das Einf�gen eines Men�punktes
> oder das Verschieben von Content in ein anderes Verzeichnis (also z.B.
> Suchen und Ersetzen mehrerer Links mit diesem Verzeichnis auf mehreren
> Seiten), von einem Programm erledigen lassen.

Sicher. Die Frage ist, *wann* man das macht:

1. Einmalig bei jeder �nderung
------------------------------
Das w�re die Sache - wie von Dir angedacht - mit dem wget. Es ist dann
immernoch recht viel unn�tige Handarbeit, funktioniert aber auch auf
Webservern, die kein PHP k�nnen. Man braucht halt einen "lokalen"
Webserver mit PHP um die Seiten zu generieren, wget, etc.
Das funktioniert zwar, macht aber eigentlich kaum ein Mensch, weil es
viel praktischer, besser und eleganter geht, n�mlich:

2. Einmalig bei jedem Aufruf/Abruf
----------------------------------
Da PHP recht schnell arbeitet und eigentlich �berall vorhanden ist ist
das der "rechte" Weg. So muss man beim Hinzuf�gen einer Seite auch nicht
alles neu per FTP hochschieben nur weil auf jeder Seite im Men� ein
neuer Punkt hinzugekommen ist. Au�erdem k�mmert sich PHP auch um
Kontaktformulare, Veranstaltungskalender, G�steb^W heise-newst^W Twitter
und was auch immer gerade "in" ist :-)

> Wenn man Ahnung von der Sache hat, erscheint der Gedanke vielleicht
> etwas esoterischer, bis unverst�ndlich? ;o)

Ja. Du schreibst ja auch kein Programm und ver�ffentlichst dann
"Screenshots" von jedem Anwendungsfall. Du ver�ffentlichst das Progamm.

Gr��e, Mat*ja, ich wei�: nicht alles was hinkt ist ein Vergleich*thias

Niels Braczek

unread,
Jul 2, 2009, 11:36:03 AM7/2/09
to
Edzard Egberts schrieb:

> Das ist ein Missverständnis - ich bin beim Stöbern auf die Info
> gestoßen, dass es einen "Crawler" gibt, der eine PHP-Datei in eine

> Statische Webseite umwandelt, es muss sich da um ein bestimmtes Programm
> handeln. Leider habe ich den Link nicht gespeichert, sondern das nur zur
> Kenntnis genommen.

man wget

> Wenn man Ahnung von der Sache hat, erscheint der Gedanke vielleicht

> etwas esoterischer, bis unverständlich? ;o)

Ich baue für statische Sites eine lokale Joomla!-Installation, deren
Ausgabe ich mit wget ziehe und auf den Server spiele.

MfG
Niels

--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · e-Commerce · Joomla! Content Management |
------------------------------------------------------------------

Edzard Egberts

unread,
Jul 2, 2009, 12:20:45 PM7/2/09
to
Matthias P. Wuerfl schrieb:
> Edzard Egberts schrieb:

> Man kann wget daf�r nehmen. Man setzt auf einem rechner einen Webserver
> mit PHP auf

Aha, den Webserver f�r PHP brauche ich doch sowieso (so weit habe ich
schon in die PHP-Dokumentation geguckt) und wget() anzuwenden, schaffe
ich wohl auch noch - da scheine ich halbwegs richtig zu liegen.

>> Ich m�chte einfache statische Webseiten mit einem eingeschr�nkten
>> HTML-Befehlssatz generieren

> 1. Einmalig bei jeder �nderung


> ------------------------------
> Das w�re die Sache - wie von Dir angedacht - mit dem wget. Es ist dann
> immernoch recht viel unn�tige Handarbeit, funktioniert aber auch auf
> Webservern, die kein PHP k�nnen.

Und f�r HTML-verpackte Dokumentation auf Rechnern ohne Webserver - das
ist f�r mich ein sehr wichtiger Aspekt.

> 2. Einmalig bei jedem Aufruf/Abruf
> ----------------------------------
> Da PHP recht schnell arbeitet und eigentlich �berall vorhanden ist ist
> das der "rechte" Weg.

"Eigentlich" ist immer so eine Sache, aber grunds�tzlich stimme ich Dir zu.

> Au�erdem k�mmert sich PHP auch um
> Kontaktformulare, Veranstaltungskalender, G�steb^W heise-newst^W Twitter
> und was auch immer gerade "in" ist :-)

An so etwas habe ich auch schon gedacht, m�chte aber nicht gleich
�berm�tig werden - zuerst soll das eine Arbeitserleichterung werden
(l�ngerfristig!) und ich hoffe, dass ich das auch schaffe, ohne gleich
PHP-Guru werden zu m�ssen. Dass ich dann vielleicht irgendwann einmal
noch ganz viele andere tolle neue Sachen damit machen kann, ist ein
Bonus. :o)

> Ja. Du schreibst ja auch kein Programm und ver�ffentlichst dann
> "Screenshots" von jedem Anwendungsfall. Du ver�ffentlichst das Progamm.

SEUFZ! Programm mit Dokumentation und da sind dann auch die ganzen
Screenshots von jedem Anwendungsfall... ;o(

Also grunds�tzlich scheine ich mit meiner Idee gar nicht so falsch zu
liegen. Wollte das eben wissen, bevor ich hier alles m�gliche Zeugs
installiere und anfange, Tutorials durchzuarbeiten - erst danach
festzustellen, dass man keine gute Idee hatte, w�re doch etwas �rgerlich...

Gru�,

Ed

Edzard Egberts

unread,
Jul 2, 2009, 12:28:47 PM7/2/09
to
Niels Braczek schrieb:
> Edzard Egberts schrieb:

> Ich baue für statische Sites eine lokale Joomla!-Installation, deren
> Ausgabe ich mit wget ziehe und auf den Server spiele.

Und Joomla! ist mit PHP geschrieben. Wenn ich nicht sowieso als
Programmierer arbeiten würde, wäre das ein guter Tipp, um schnell etwas
auf die Beine zu stellen. Aber wenn ich mich schon irgendwo einarbeiten
muss, ziehe ich eine Programmiersprache einer Anwendung vor. Die
Anfangshürde ist zwar erheblich höher, langfristig bieten sich aber mehr
Möglichkeiten und ich habe es nicht eilig.

Gruß,

Ed

Hadanite Marasek

unread,
Jul 2, 2009, 1:32:04 PM7/2/09
to
Edzard Egberts schrieb:

> Das ist ein Missverst�ndnis - ich bin beim St�bern auf die Info
> gesto�en, dass es einen "Crawler" gibt, der eine PHP-Datei in eine
> Statische Webseite umwandelt, es muss sich da um ein bestimmtes Programm
> handeln. Leider habe ich den Link nicht gespeichert, sondern das nur zur
> Kenntnis genommen.

Richtig, so habe ich zwischendrin Webseiten gemacht, als PHP noch die
grosse Sonderzusatzleistung war und ein Freund nur einen Account ohne
PHP hatte.

Prinzipiell:
-mit mod_rewrite URLs so umbiegen, dass man z. b. index.php?page=home
mit home ansprechen kann
-intern nat�rlich alle Links richtig setzen
-dann wget <lokale Seite> -r dr�berjagen [Parameter musst Du nochmal
genau nachschlagen]
-den Output von wget auf den Remote Server hochschieben

Wenn man sauber arbeitet, l�uft das prima.

Alternativ kann man auch - wenn man sich besser auskennt - ein
Kommandozeilenskript mit PHP (oder einer anderen Sprache der Wahl)
schreiben, dass die Seite baut.

Hadanite Marasek

unread,
Jul 2, 2009, 1:37:39 PM7/2/09
to
Edzard Egberts schrieb:

> Hallo,
>
> ich bin zwar haupts�chlich C++-Entwickler, betreue inzwischen aber
> nebenbei ein paar Webseiten (z.B. www.tantec.de). Obwohl CSS ein echter
> Fortschritt ist, finde ich es sehr nervend, dass man beispielsweise f�r
> die �nderung eines Men�eintrags alle Seiten anfassen muss, die dieses
> Men� verwenden - da vermisse ich ein "#include" und die M�glichkeit,
> Webseiten aus Modulen aufzubauen. Vom ersten Gedanken, so etwas selber
> zu programmieren, bin ich ganz schnell wieder abgekommen, (denn so etwas
> *muss* es doch schon geben!) und hier gelandet:
>
> Ist PHP f�r so etwas geeignet und empfehlenswert? Also um eine Website
> auseinander zu pfl�cken, zu modularisieren und dann weiter auszubauen?
> Auch um z.B. eine Dokumentation in eine Web-Men�struktur zu packen (ohne
> Frames verwenden zu m�ssen, l�uft auf "Content-Management" hinaus)?

Hihi, so habe ich auch angefangen, genau das Men� war der Grund.
Ich habe lange Zeit mit datenbanklosen "CMS"-Systemen gearbeitet, also
einfach PHP genutzt, um mir eine Seite aus Header, Footer, Navigation
und variablem Inhalt zusammenzubauen.
Der Vorteil daran ist, dass man letzlich die gleiche Flexibilit�t hat
wie mit statisch, man hat sich aber ein paar l�stige Routinesachen
wegautomatisiert und kann zudem - das war mir immer sehr wichtig - lokal
und remote per FTP/SCP synchron halten. Mit einem datenbankbasierten CMS
ist das schwieriger...


Als jemand, der sich mit HTML selber gut genug auskennt, w�rde ich nie
f�r meine Seiten mit einem System wie Joomla oder *schauder* TYPO3
arbeiten wollen. Viel zu komplex und unflexibel.

Matthias P. Wuerfl

unread,
Jul 2, 2009, 1:54:05 PM7/2/09
to
Edzard Egberts schrieb:

> Wollte das eben wissen, bevor ich hier alles m�gliche Zeugs
> installiere

Als "Alles m�gliche Zeugs" w�re in Deinem Falle vielleicht "XAMPP" geeignet.

Gr��e, Matthias

Michael Meyer

unread,
Jul 2, 2009, 1:59:13 PM7/2/09
to
*** Edzard Egberts <ed...@tantec.de> wrote:

> Obwohl CSS ein echter Fortschritt ist, finde ich es sehr nervend,
> dass man beispielsweise f�r die �nderung eines Men�eintrags alle
> Seiten anfassen muss, die dieses Men� verwenden - da vermisse ich ein
> "#include

http://www.php.net/manual/de/function.include.php

> Immer mit dem Ziel, das ganze Geraffel nicht als PHP, sondern als
> statische Webseite zu ver�ffentlichen (daf�r scheint es einen "Crawler"
> zu geben)?

http://www.httrack.com/
http://search.cpan.org/~janl/w3mir-1.0.10/w3mir.PL
wget

Micha

Edzard Egberts

unread,
Jul 2, 2009, 2:10:37 PM7/2/09
to
Matthias P. Wuerfl schrieb:

Also das ist ja schon fast unter meiner W�rde! ;o)

Danke,

Ed

Edzard Egberts

unread,
Jul 2, 2009, 2:23:52 PM7/2/09
to
Hadanite Marasek schrieb:
> Edzard Egberts schrieb:

>> Ist PHP f�r so etwas geeignet und empfehlenswert? Also um eine Website
>> auseinander zu pfl�cken, zu modularisieren und dann weiter auszubauen?
>> Auch um z.B. eine Dokumentation in eine Web-Men�struktur zu packen
>> (ohne Frames verwenden zu m�ssen, l�uft auf "Content-Management" hinaus)?
>
> Hihi, so habe ich auch angefangen, genau das Men� war der Grund.
> Ich habe lange Zeit mit datenbanklosen "CMS"-Systemen gearbeitet, also
> einfach PHP genutzt, um mir eine Seite aus Header, Footer, Navigation
> und variablem Inhalt zusammenzubauen.

TATA - wenn das kein Volltreffer ist! :o)

Hast Du da zuf�llig noch ein Beispiel-Skript herumfliegen, das Du mir
zukommen lassen k�nntest (die E-Mail-Adresse ist g�ltig)? Mit so etwas
(und dem XAMPP-Tipp) k�nnte ich fast unmittelbar loslegen...

> Der Vorteil daran ist, dass man letzlich die gleiche Flexibilit�t hat
> wie mit statisch, man hat sich aber ein paar l�stige Routinesachen
> wegautomatisiert und kann zudem - das war mir immer sehr wichtig - lokal
> und remote per FTP/SCP synchron halten. Mit einem datenbankbasierten CMS
> ist das schwieriger...

Genau so habe ich mir das gedacht.

> Als jemand, der sich mit HTML selber gut genug auskennt, w�rde ich nie
> f�r meine Seiten mit einem System wie Joomla oder *schauder* TYPO3
> arbeiten wollen. Viel zu komplex und unflexibel.

Ja, das typische "Framework-Problem", da habe ich im C++-Bereich auch
schon so meine Erfahrungen gemacht.

Gru�,

Ed

Hadanite Marasek

unread,
Jul 2, 2009, 2:59:39 PM7/2/09
to
Edzard Egberts schrieb:

> Hadanite Marasek schrieb:
>> Edzard Egberts schrieb:
>>> Ist PHP f�r so etwas geeignet und empfehlenswert? Also um eine
>>> Website auseinander zu pfl�cken, zu modularisieren und dann weiter
>>> auszubauen?
>>> Auch um z.B. eine Dokumentation in eine Web-Men�struktur zu packen
>>> (ohne Frames verwenden zu m�ssen, l�uft auf "Content-Management"
>>> hinaus)?
>>
>> Hihi, so habe ich auch angefangen, genau das Men� war der Grund.
>> Ich habe lange Zeit mit datenbanklosen "CMS"-Systemen gearbeitet, also
>> einfach PHP genutzt, um mir eine Seite aus Header, Footer, Navigation
>> und variablem Inhalt zusammenzubauen.
>
> TATA - wenn das kein Volltreffer ist! :o)
>
> Hast Du da zuf�llig noch ein Beispiel-Skript herumfliegen, das Du mir
> zukommen lassen k�nntest (die E-Mail-Adresse ist g�ltig)? Mit so etwas
> (und dem XAMPP-Tipp) k�nnte ich fast unmittelbar loslegen...

Ich hab Dir mal eben was improvisiert und stells hier rein, damit die
anderen auch lachen k�nnen bzw. falls ich einen Fehler gemacht habe - es
ist lange her, dass ich so gearbeitet habe:

index.php
-------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<div>
<?php
echo file_get_contents("html/navigation.html");
?>
</div>
<div>
<?php
if(!isset($_GET["page"])) {
echo file_get_contents("html/index.html");
} else {
$pathinfo = pathinfo($_GET["page"]);
$filename = $pathinfo["filename"];
if(file_exists("html/".$filename.".html")) {
echo file_get_contents("html/".$filename.".html");
}
}
?>
</div>
</body>
</html>
-----------------------------

Ich habe hier die Annahme getroffen, dass alle HTML-Dateien im
Verzeichnis "html" liegen. Diese m�ssen dann Rumpfdateien sein, die nur
den Bereich zwischen <body></body> darstellen.

Aufruf mit z. B. index.php?page=impressum, ohne Parameter kommt die
index.html. Meiner Ansicht nach ist der Kniff mit pathinfo ausreichend,
dass niemand index.php?page=/etc/passwd auslesen kann.

Wenn Du die Sache ab�nderst denk dran - NIE Parameter aus $_GET oder
$_POST ungepr�ft verwenden!

Wenn Du jetzt eine mod_rewrite-Regel baust, die aus index.htm =>
index.php?page=index macht, wird nie jemand merken, dass Du eine
PHP-Seite laufen hast...

Ulf [Kado] Kadner

unread,
Jul 2, 2009, 5:21:50 PM7/2/09
to
Hadanite Marasek schrieb:

> index.php
> -------------------------------
> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

> ...


> <?php
> echo file_get_contents("html/navigation.html");
> ?>

Alles gut und sch�n. Ein Anf�nger will schlie�lich auch erfolge sehen.

Aber es w�r definitiv w�nschenswert einem Anf�nger auch gleich noch mit
zu sagen das derartiger Code keine Wirkliche Zukunft hat. Sowas reibt
man sich halt mal an Anfang unter die Nase um evtl. verschiedene Dinge
verstehen zu k�nnen.

Aber besser ists sich auch gleich mit besseren Techniken vertraut zu
machen die einem z.B. wilde Markup-PHP Mixorgien ersparen.

Also ich halts f�r sehr anratsam auch Anf�nger gleich mit
Templateengines und n�tzlichen Frameworks vertraut zu machen.

Folgendes ist f�r den OP, ich will da nicht extra nen Posting machen und
alles doppelt schreiben:

Es ist seeeehr wichtig immer Gesch�ftlogik (Bussinesslogic) und
Darstellung strickt voneinander zu trennen. Damit erspart man sich nicht
nur Code dank besserer Wiederverwendbarkeit sondern man h�lt auch
wesentlich besser ordnung und findet n�tigen Falles verschiede Dinge
(Code) besser wieder.

Minimalbeispiel ohne Engine zur Verdeutlichung

### Beispieltemplate (document.tpl) ###
<html>
<head>
<title>$Title</title>
</head>
<body>
<h1>$Title</h1>
<p>$Contents </p>
</body>
</html>
### Ende des Templates ###

Mit der obigen Template (Vorlage) wird eine minimale wiederverwendbare
Struktur vorgegeben um ein HTML Dokument zu erzeugen in dem die
angegebenen Platzhalter (Format $Platzhaltername) einfach durch
wechselnde Inhalte ersetzen zu k�nnen. Das kan man nat�rlich noch
wesentlich verfeinern, aber darum gehts am Anfang erst mal nicht.

Jetzt hast Du den Vorteil das Du lediglich eine verarbeitende PHP-Datei
anlegen must in der die Templatedatei eingelesen wird, notwendige
Ersetzungen vorgenommen werden und dann ein Output an den Browser
erfolgt. => Will heisen in der PHP Datei steht nur PHP-Code was das
ganze wesentlich besser lesbar macht.

<?php
# Dateiinhalt der Templatedatei einlesen
$templateContent = file_get_contents( './document.tpl' );
# Zu ersetzende Platzhalter definieren
$searchTags = array('$Title', '$Contents');
$replaceTags = array('Startseite', 'Hello World');
if (isset($_GET['action']) && $_GET['action'] === 'kontakt')
{
$replaceTags[0] = 'Kontaktdaten';
$replaceTags[1] = '<p>Irgend welche Address-Daten :-)</p>');
}
# HTTP-Header senden
header ('Content-Type: text/html; charset=utf-8');
# Platzhalter ersetzen und HTML-Dokument ausgeben
echo str_replace($searchTags , $replaceTags, $templateContent);
?>

Mit ner Templateengine geht da noch viel mehr und meist auch schneller.

MfG, Ulf

Edzard Egberts

unread,
Jul 2, 2009, 5:25:11 PM7/2/09
to
Hadanite Marasek schrieb:
> Edzard Egberts schrieb:
>> Hast Du da zuf�llig noch ein Beispiel-Skript herumfliegen, das Du mir
>> zukommen lassen k�nntest

> Ich hab Dir mal eben was improvisiert und stells hier rein, damit die

> anderen auch lachen k�nnen bzw. falls ich einen Fehler gemacht habe - es
> ist lange her, dass ich so gearbeitet habe:

Hey, vielen Dank - wenn ich mit etwas Funktionierendem losbasteln kann,
gibt es eine ganz andere Lernkurve, als wenn ich erst mal mit
Grundlagenstudium anfangen und mir etwas ausdenken muss. :o)

Mal ganz grob gefragt, wie sieht denn das Lernziel aus? Die Art, wie Du
jetzt arbeitest - ist HTML da �berhaupt noch Thema, oder benutzt Du nur
noch den PHP-Befehlssatz?

> Ich habe hier die Annahme getroffen, dass alle HTML-Dateien im
> Verzeichnis "html" liegen. Diese m�ssen dann Rumpfdateien sein, die nur
> den Bereich zwischen <body></body> darstellen.

Damit ist mein Ursprungs-Anliegen erledigt, es existiert sogar
Textverst�ndnis. ;o)

> Wenn Du die Sache ab�nderst denk dran - NIE Parameter aus $_GET oder
> $_POST ungepr�ft verwenden!

Okay, wenn ich mir das mal genauer angeguckt habe, wei� ich bestimmt,
was Du meinst. Im Moment ist das mit den Details aber arg fr�h, dass ich
den Befehlssatz "grob �berflogen" h�tte, grenzt an eine �bertreibung...

> Wenn Du jetzt eine mod_rewrite-Regel baust, die aus index.htm =>
> index.php?page=index macht, wird nie jemand merken, dass Du eine
> PHP-Seite laufen hast...

Ach, das ist mir eigentlich egal - ohne die Nebenbedingung mit der
HTML-Dokumentation, w�rde ich rein f�r die Website-Programmierung wohl
HTML & CSS in die Tonne treten und gleich Java benutzen. Mit C++ kenne
ich mich sehr gut aus und Java ist meines Wissens sehr �hnlich, aber
einfacher...

Gru�,

Ed

Hadanite Marasek

unread,
Jul 2, 2009, 5:47:24 PM7/2/09
to
Edzard Egberts schrieb:
> Hadanite Marasek schrieb:

> Hey, vielen Dank - wenn ich mit etwas Funktionierendem losbasteln kann,

> gibt es eine ganz andere Lernkurve, als wenn ich erst mal mit
> Grundlagenstudium anfangen und mir etwas ausdenken muss. :o)

Ulf Kadner hat nat�rlich insofern recht, dass das ein /sehr/ reduzierter
Ansatz ist. Das ist im Grunde "statisches HTML mit ein wenig Hilfe".

> Mal ganz grob gefragt, wie sieht denn das Lernziel aus? Die Art, wie Du
> jetzt arbeitest - ist HTML da �berhaupt noch Thema, oder benutzt Du nur
> noch den PHP-Befehlssatz?

Lernziel? Gibt es aus meiner Sicht keins, jeder hat seine eigenen
Priorit�ten und es gibt verschiedene Philosophien und Ans�tze.

Ich habe jetzt meistens ein HTML-Template mit Platzhaltern, und dann
vieeeele Klassen, die das Template mit Inhalt f�llen. Ultimativ erzeugt
man mit PHP einfach das HTML, dass man sonst selber schreiben m�sste,
deshalb kommt man von HTML nie weg.
Ich selbst erzeuge das meiste HTML mit PHP, andere Leute gewichten da
st�rker, mehr HTML von Hand zu schreiben und PHP nur einzelne St�cke
ersetzen zu lassen.

>> Ich habe hier die Annahme getroffen, dass alle HTML-Dateien im
>> Verzeichnis "html" liegen. Diese m�ssen dann Rumpfdateien sein, die
>> nur den Bereich zwischen <body></body> darstellen.
>
> Damit ist mein Ursprungs-Anliegen erledigt, es existiert sogar
> Textverst�ndnis. ;o)
>
>> Wenn Du die Sache ab�nderst denk dran - NIE Parameter aus $_GET oder
>> $_POST ungepr�ft verwenden!
>
> Okay, wenn ich mir das mal genauer angeguckt habe, wei� ich bestimmt,
> was Du meinst. Im Moment ist das mit den Details aber arg fr�h, dass ich
> den Befehlssatz "grob �berflogen" h�tte, grenzt an eine �bertreibung...

Naja, probiers einfach mal aus, schreibe ein einfaches echo
file_get_contents($_GET["page"]) und dann ruf das mit
index.php5?page=/etc/passwd auf (wenn Du ein Unix hast).

Edzard Egberts

unread,
Jul 2, 2009, 5:54:03 PM7/2/09
to
Ulf [Kado] Kadner schrieb:
> Hadanite Marasek schrieb:

> Aber es w�r definitiv w�nschenswert einem Anf�nger auch gleich noch mit
> zu sagen das derartiger Code keine Wirkliche Zukunft hat.

> Es ist seeeehr wichtig immer Gesch�ftlogik (Bussinesslogic) und

> Darstellung strickt voneinander zu trennen.

Info nebenbei - der "Anf�nger" hat vor 29 Jahren mit Assembler
angefangen (Microcomputer), dann BASIC, FORTRAN und Turbo-PASCAL, seit
13 Jahren beruflich fast Vollzeit C++ (ich denke, ich bin da ziemlich
gut) mit gelegentlich noch etwas 8051-Assembler und
Hardware-Entwicklung. Dein Paradigma ist mir als Trennung von
Programmkern und GUI wohl bekannt, Du brauchst Dich also nicht zu
zieren, wenn es an's Eingemachte geht. ;o)

> ### Beispieltemplate (document.tpl) ###

> <?php
> # Dateiinhalt der Templatedatei einlesen

> ?>

Unmittelbar einleuchtend, Danke.

> Mit ner Templateengine geht da noch viel mehr und meist auch schneller.

�hm, das da oben war doch eine Template Engine? Ich habe das
sicherheitshalber in der Wikipedia nachgeguckt, weil ich gerade etwas
ins Schleudern kam und das PHP-Beispiel ist �hnlich.

Na, das sieht doch alles ganz toll aus, damit habe ich gar nicht gerechnet.

Gru�,

Ed

Niels Braczek

unread,
Jul 2, 2009, 6:04:09 PM7/2/09
to
Edzard Egberts schrieb:
> Niels Braczek schrieb:

Du schreibst deine E-Mails mit C++, oder?

Joomla! (und prinzipiell jedes andere brauchbare CMS ebenso) bietet alle
Funktionen, die zur Verwaltung des Inhalts (dazu gehört die Erzeugung
von Menüs) nötig sind, in Verbindung mit einer bequemen
Eingabemöglichkeit. So etwas "von Hand" zu machen ist Zeit- und somit
Geldverschwendung.

Hadanite Marasek

unread,
Jul 2, 2009, 6:13:15 PM7/2/09
to
Ulf [Kado] Kadner schrieb:

> Hadanite Marasek schrieb:
>
>> index.php
>> -------------------------------
>> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ...
>> <?php
>> echo file_get_contents("html/navigation.html");
>> ?>
>
> Alles gut und sch�n. Ein Anf�nger will schlie�lich auch erfolge sehen.
>
> Aber es w�r definitiv w�nschenswert einem Anf�nger auch gleich noch mit
> zu sagen das derartiger Code keine Wirkliche Zukunft hat. Sowas reibt
> man sich halt mal an Anfang unter die Nase um evtl. verschiedene Dinge
> verstehen zu k�nnen.

Naja, als spezifische L�sung fand ich es legitim, ausserdem tr�gt es zum
Lerneffekt bei, wenn man mit kleinen Sachen anf�ngt und sich dann mit
wachsender Komplexit�t an bessere Ans�tze ranmacht. Man versteht dann
die Zwischenschritte auf dem Weg von "statisches HTML" zu "Three
Tier-Architektur". Gerade dieses Verst�ndnis fehlt mir bei vielen
Programmierern, die plappern halt nach, was sie an wichtig klingenden
W�rtern gelernt haben und verstehen meiner Erfahrung nach erschreckend
oft nicht, was sie wirklich bedeuten und warum man diese Sachen einsetzt.

Ulf [Kado] Kadner

unread,
Jul 2, 2009, 6:19:23 PM7/2/09
to
Edzard Egberts schrieb:

> Unmittelbar einleuchtend, Danke.

Gern geschehen. Freut mich auch das Du hier Verst�ndnis und vor allem
Interesse zeigst!

>> Mit ner Templateengine geht da noch viel mehr und meist auch schneller.
>
> �hm, das da oben war doch eine Template Engine?

Prinzipiel hast Du damit nat�rlich recht. Aber ich meine Damit eher
Codeseitig fertig ausgebaute Klassen-Biliotheken die einen den Umgang
mit derartigen Dingen nochmal wesentlich erleichtern k�nnen.

Gerad so Dinge wie Abarbeitung von Arrays in Schleifen (z.B. f�r
Listings) sind in Templates auch durchaus gut aufgehoben.
Wie andere Engines das genau machen kann ich auf Grund des Mangel an
Wiseen dar�be nicht mehr sagen (zu lange her) aber in meiner Engine
sieht das z.B. so aus wenn ein Array f�r ein Listing im Template
abgearbeitet wird.

<dl> <!--@foreach var="MyArray" loopkey="Key" loopvalue="Value">
<dt>{$Key|htmlentities} </dt>
<dd>{$Value|htmlentities} </dt> <!--@end-->
<dl>

Wenn ich das Template in meiner Engine nutze und dort folgendes Array
f�r den Platzhalter 'MyArray' definiere:

$enginge->assign('MyArray',
array('Key 1' => 'Value 1', 'Key 2' => 'Value 2'));

Dan hat sich das Problem schon f�r micht erledigt. Einfacher gehts ja
fast nicht. Es wird ohne irgendwelche codetechnischen Extraaufwendungen
folgendes Ausgegeben:

<dl>
<dt>Key 1 </dt>
<dd>Value 1 </dt>
<dt>Key 2 </dt>
<dd>Value 2 </dt>
<dl>

Hinter den Kulissen wird �brigens ein Mix aus HTML und PHP draus der als
eine Art Zwischenkompilat abgelegt wird:

<dl> <?php foreach ($MyArray as $Key=>$Value) { ?>
<dt><?php echo htmlentities($Key); ?> </dt>
<dd><?php echo htmlentities($Value); ?> </dt> <?php } ?>
<dl>

Das geschieht nat�rlich transparent im Hintergrund und wird in einem
Cacheverzeichnis als PHP-Datei abgelegt. Um diese Datei braucht sich
keiner au�er die Templateengine k�mmern. Das erh�ht die Performance aber
ungemein anstatt *jedes* *mal* irgend welche Logic im Template zu
interpretieren.

MfG, Ulf

Konni Scheller

unread,
Jul 3, 2009, 2:53:36 AM7/3/09
to
Edzard Egberts <ed...@tantec.de> wrote:

> Und Joomla! ist mit PHP geschrieben. Wenn ich nicht sowieso als

> Programmierer arbeiten w�rde, w�re das ein guter Tipp, um schnell etwas


> auf die Beine zu stellen. Aber wenn ich mich schon irgendwo einarbeiten
> muss, ziehe ich eine Programmiersprache einer Anwendung vor. Die

> Anfangsh�rde ist zwar erheblich h�her, langfristig bieten sich aber mehr
> M�glichkeiten und ich habe es nicht eilig.

Schreib dir ein CMS.

Das haben hier alle schon einmal gemacht.

Servus,
Konni

--
"Die Unmenschlichkeit des praktizierten Atheismus haben im ver-
gangenen Jahrhundert die gottlosen Regime des Nationalsozialismus
und des Kommunismus mit ihren Straflagern, ihrer Geheimpolizei und
ihren Massenmorden in grausamer Weise bewiesen" -- Bischof Mixa

Joachim Mohr

unread,
Jul 3, 2009, 4:29:02 AM7/3/09
to
Hallo Edzard,

Ich antworte auf Deinen Betreff "statische Webseiten".

Edzard Egberts schrieb:


> da vermisse ich ein "#include"

Das geht ohne weiteres. Und: Alles mit HTML/CSS.
Du mu�t dazu kaum PHP verstehen und auch nicht auf Deinem Computer
installieren.
Die meisten Webservern vararbeiten per Vorinstallation PHP.

(Ich wei�: Die Profis protestieren jetzt. Du kannst erst nach dem
Hochladen testen. Mir gen�gt das.)


Nenne die einbindende Datei xyz.html um in xyz.php
nun kannst Du Deine HTML-Dateien per include an passender Stelle
einbinden. Beispiel:

http://www.eberhardskirche.de/index.php

Die Aktuelle Seite rechts bindet
"termine_a.htm" (Besondere Hinweise) und
"termine_b.htm" (wird w�chentlich aktualisiert)

folgenderma�en ein:

<td class="news">
<h2>Aktuelles</h2>
<?php> include("termine_a.html"); ?>
<?php> include("termine_b.html"); ?>
...

termine_a.htm ist dabei folgende Datei:

"<b>Verschiebung</b>:<br>
Die n&auml;chste <span style="color:#FF0000;">Lernstub</span> ist am
<b>Dienstag, 30. Juni</b>.
...

termine_b.html �hnlich.

Gru�
Joachim

--
Joachim Mohr T�bingen
http://www.joachimmohr.de

Claus Reibenstein

unread,
Jul 3, 2009, 4:51:55 AM7/3/09
to
Joachim Mohr schrieb:

> Die Aktuelle Seite rechts bindet

> "termine_a.htm" [...]


> folgenderma�en ein:
>
> <td class="news">
> <h2>Aktuelles</h2>
> <?php> include("termine_a.html"); ?>

Wohl kaum. Du meinst sicher

<?php include 'termine_a.htm'; ?>

Entscheidend ist hier:
- PHP-Code wird durch "<?php" und nicht durch "<?php>" eingeleitet
- Die Datei hei�t "termine_a.htm" und nicht "termine_a.html"

Die doppelten Anf�hrungsstriche und die Klammern sind zwar nicht falsch,
aber �berfl�ssig.

Gru�. Claus

Edzard Egberts

unread,
Jul 3, 2009, 6:24:05 AM7/3/09
to
Ulf [Kado] Kadner schrieb:

> in meiner Engine
> sieht das z.B. so aus wenn ein Array f�r ein Listing im Template
> abgearbeitet wird.

> Einfacher gehts ja fast nicht.

Also im Moment habe ich das Gef�hl, dass ich da noch etwas dr�ber
meditieren muss - mal sehen, wann ich das wirklich verstanden habe.
Kommt bestimmt bei der Anwendung...

So, jetzt verabschiede ich mich ins Wochenende (Open-Air-Festival :o)
und w�nsche auch allen hier ein sch�nes Wochenende. F�r ein "mal
nebenbei anfragen" f�hle ich mich zwar etwas erschlagen, aber daf�r muss
ich jetzt ja nur noch anfangen und bin wunschlos gl�cklich. ;o)

Gru�,

Ed

Joachim Mohr

unread,
Jul 3, 2009, 8:29:09 AM7/3/09
to
Claus Reibenstein schrieb:
> <?php include 'termine_a.htm'; ?>

Ja! Klar! Danke f�r den Hinweis!
(Dummerweise wurde die freherhafre Anweisung
korrekt ausgef�hrt. Eine Fehlermeldung w�re
mir lieber gewesen. Ich bin das von Delphi
gewohnt.)

Joerg

unread,
Jul 4, 2009, 9:29:08 AM7/4/09
to
Am Thu, 02 Jul 2009 19:37:39 +0200 schrieb Hadanite Marasek:


> Als jemand, der sich mit HTML selber gut genug auskennt, würde ich nie
> für meine Seiten mit einem System wie Joomla oder *schauder* TYPO3

> arbeiten wollen. Viel zu komplex und unflexibel.

Typo3 unflexibel? LOL

0 new messages