Xxx.php?site=xxx konfigurieren

Guten Tag,

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 =(

Hoffe auf Hilfe

mfG
Flenci

E-Mail: [email protected]
ICQ: 499-818-270

Da habe ich ein gutes Beispiel… sofern alle Dateien in einem Verzeichnis liegen:

config.php:

<?php if ( $_GET['page'] ) {<br /> if ( file\_exists ( $\_GET['page'] . ".php" ) ) {
 $thePage= $\_GET['page'];
 } else {
 $thePage= "home";
 } 
}else {
 $thePage= "home";
}

?>

index.php:

<?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.

Kannst du nach belieben anpassen.

Viel Spaß damit.
Gruß
Lucidus

Da habe ich ein gutes Beispiel… sofern alle Dateien in einem
Verzeichnis liegen:

config.php:

<?php :if ( $_GET['page'] ) {
if ( file\_exists ( $\_GET['page'] . ".php" ) ) { $thePage= $\_GET['page']; } else { $thePage= "home"; } }else { $thePage= "home"; } ?\> index.php: <?php :
require ( "config.php" ); include ( "header.php" ); include ( $thePage . ".php" ); include ( "footer.php" ); ?\>

Das Beispiel von Lucidus ist schön und richtig.

Würde dir aber SWITCH CASE usw. empfehlen.
Du solltest nichts einbinden (include) was nicht eingebunden werden darf. Gib acht.

Switch Case in php Manual: http://www.php.net/manual/de/control-structures.swit…

Gruß Sebastian

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);
}
?\>

Gruß Sebastian

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.