Christian Seiler: mehrere Frames ändern (keine 0815 Frage!)

Beitrag lesen

Hallo,

Hab ich was falsch gemacht, oder muss man da noch was ändern?

Vielleicht PHP 4.0? ($_GET und die anderen Superglobalen variablen wurden erst in PHP 4.1 eingeführt) Dann müsste $_GET durch $HTTP_GET_VARS ersetzt werden. Falls es dann immer noch nicht klappt, wäre die Ausgabe von

<?php php_info (); ?>

sehr nützlich (natürlich in einer separaten Datei z.B. info.php)

Achtung: der untere Frame war in meinem Skript nicht vorhergesehen (weil ich in deinem JS-Code nirgendwo was dazu entdeckt habe). Wenn Du den unteren Frame auch einbinden willst, mussst Du die Dateien indexNEU.php und frameset.php entsprechend ändern.

Außerdem solltest Du folgendes beachten: aus Sicherheitsgründen mache ich ein basename() der Parameter in der frameset.php, d.h. ich schneide evtl. angegebene Pfade ab und nehme nur den Dateinahmen; daher funktionieren Unterverzeichnisse nicht. Am sichersten und elegantesten wäre es jedoch, wenn Du eine Liste mit gültigen Dateien hättest, und die dann benutzen würdest. Es gibt also nur noch ein Parameter pages (z.B. href="frameset.php?pages=service" od. href="frameset.php?pages=projekte") und es werden in der frameset.php 3 assoziative Arrays fest eingegeben, die die ganzen Seitendateien enthalten.

Dies würde dann so aussehen (Anfang der Datei):

<?php
$navs = array ("service" => "nav_service.htm", "projekte" => "nav_projekte.htm", ...);
$oben = array ("service" => "frs2_oben_service.htm", "projekte" => "frs2_oben_projekte.htm", ...);
$mitten = array ("service" => "frs2_mitte_service.htm", "projekte" => "frs2_mitte_projekte.htm", ...);

if (!isset($navs[$_GET["pages"]]) || !isset($oben[$_GET["pages"]]) || !isset($mitten[$_GET["pages"]])) {
  // ungültige Seiten angegeben -- also Standardseiten verwenden
  $page_nav = "nav_standard.htm";
  $page_top = "frs2_oben_standard.htm";
  $page_middle = "frs2_mitte_standard.htm";

// (andere Möglichkeit wäre auch auf index.php zurückzuleiten)
  // das ginge dann so (folgende Zeile auskommentieren):
  // Header ("Location: http://" . $_SERVER["REMOTE_HOST"] . dirname($_SERVER["PHP_SELF"]) . "/indexNEU.php");
  // dazu dürfte aber dann nichts vor dem <?php stehen, also
  // müsste die Doctype drunter
} else {
  $page_nav = $navs[$_GET["pages"]];
  $page_top = $oben[$_GET["pages"]];
  $page_middle = $mitten[$_GET["pages"]];
}
?>

der Rest dann so wie vorher... (obwohl: falls es PHP 4.0 ist und der erste Quellcode nur mit $HTTP_GET_VARS statt $_GET funktioniert müsste auch im unteren $_GET durch $HTTP_GET_VARS und $_SERVER durch $HTTP_SERVER_VARS ausgetauscht werden)

Grüße,

Christian