wahrscheinlich kennen viele von euch Seiten, bei denen man auf einen Link klickt und anschließend solche URL’s sieht, wie z.B. selbst bei wer-weiss-was … www.wer-weiss-was.de/app/wizard/add_entry?board_id=xxx …
sowas möchte ich auf meiner Seite ebenfalls machen,
ich weiß allerdings nicht wie ich soetwas einrichte =(
<?php require ( "config.php" );<br />
include ( "header.php" );
include ( $thePage . ".php" );
include ( "footer.php" );
?\>
Hier wird als Standard-Inhalt home.php included, ansonten immer der inhalt der in der url steht, sprich: index.php?page=bla > wird bla.php zwischen header und footer eingebunden, sollte diese Datei nicht vorhanden sein wiederum home.php.
Lucidius hat es schön mit einem Beispiel gemacht,
was für mich verständlich ist …
Bei dem Switch Case blicke ich nicht ganz durch =(
Was sind die Vor und Nachteile und kannst du ein Beispiel posten?
Natürlich, zB der User will zur Seite xxx gelangen. Und du prüfst nicht, was der User eingibt, also zB site=include/deleteAllWhatever.php. Nun würdest du dem User erlauben, alles von deinem Server zu löschen. Ist ein Sicherheitsrisiko. Ich würde über SWITCH Case prüfen, was überhaupt in site stehen darf.
Hier ein Beispiel:
<?php switch ($_GET["site"]) {<br /> case "gb":
$file = gb.php
break;
case "news":
$file = news.php
break;
case "events":
$file = events.php
break;
default:
$file = "home.php";
}
#Nun dein include:
if(isset($file))
{
include($file);
}
?\>
Das Größte Problem ist weniger ein Script, das alles löschen kann (denn dazu müsste es ja auch erstmal ein solches Script geben), sondern vielmehr die Möglichkeit, Dteien einzubinden, die nicht eingebunden werden sollen. Beispiel hierfür z.B. die php.ini, .htaccess, passwd oder sonstige Dateien mit sicherheitsrelevanten Informationen darin. Durch die angefügte Endung „.php“ ist es zwar schon schwieriger, jedoch nicht unbedingt unmöglich.
Mit Switch-Case kannst du mehrere Varianten prüfen:
switch (strtolower ($_GET[‚file‘]))
{
case ‚datei1‘:
{
include (‚datei1.php‘);
break;
}
case ‚datei2‘:
{
include (‚datei2.php‘);
break;
}
default:
{
include (‚standard.php‘);
break;
}
}
durch strtolower() wird der String immer in Kleinbuchstaben gewandelt, damit auch bei der Eingabe von „DaTeI1“ „datei1.php“ eingebunden wird. Wichtig ist, dass du für jeden Fall ein „case“ angibst, ebenso, wie es oben steht. Das break; bricht nach der Ausführung des Case’ den Swich ab und setzt direkt danach wieder an, dsa Script weiter abzuarbeiten. Das ist insofern wichtig, da sonst im obigen Fall bei „datei1“ erst „datei1.php“, dann „datei2.php“ und dann „standard.php“ eingebunden werden würde, wäre kein break vorhanden.