Hallo,
if (!isset($_GET["file"])) {
if (file_exists($_GET["file"].".php"))
include ($_GET["file"].".php");
else
include ("error404.php");
} else {
include ("start.php");
}
Achso, Du hast also offenbar schon fertige "HTML-Bausteine",
die Du mit include() einfuegen willst.
Das ist im Prinzip schoen und erspart Dir das "Ausfiltrieren"
der Bereichs zwischen <BODY> und </BODY>, wenn Du es richtig
gemacht hast (d.h. wenn die einzuschliessenden Dateien wirklich
nur den HTML-Baustein zurueckgeben und nicht eine vollstaendige
HTML-Datei mit allem drum und dran).
Also, ich vermute, Du willst folgendes: Wenn die Datei mit
blabla.php?file=impressum
aufgerufen wird, soll die Datei impressum.php (die im gleichen
Verzeichnis liegt) eingebettet werden.
Da ist allerdings ein sehr grosses Sicherheitsrisiko,
denn ein "Boesewicht" kann so unter Umstaenden auch
Dateien einbetten, die boeses tun oder Dinge verraten,
die geheim bleiben sollten (Passwoerter u.s.w.).
Du solltest also die uebergebene Variable vorher pruefen,
unter anderem saemtliche Punkte ("."), Slashes ("/") und
Backslashes ("") aus dem uebergebenen Dateinamen entfernen.
Noch besser/sicherer waere eine interne Zuordnung:
"impressum" => "impressum.php"
"fotos" => "fotos.php"
alles andere/undefinierte => "404.php"
Das machst Du entweder ueber eine SWITCH/CASE Konstruktion,
oder ueber einen assoziativen Array.
Weitere Sicherheitstips werden hoffentlich noch folgen...
Und lies mal:
http://www.dclp-faq.de/q/q-sicherheit-parameter.html
Gruesse,
Thomas