Webseiten-Navigation mit PHP

metalwilli

Grünschnabel
Hallo!

Ich will eine Webseiten-Navigation mit PHP realisieren. Ganz oben stehen die Hauptlinks, gleich darunter links jeweils 2 Unterlinks und in der Mitte soll jetzt der Content stehen.

So schauts bis jetzt aus: http://metalwilli.me.ohost.de/test/

Die Unterlinks werden allesamt korrekt angezeigt, doch leider werden sie durch Klick auf den Unterlink durch den Content ersetzt. Mein Ziel wäre es jedoch, dass die Unterlinks stehen bleiben und der Content rechts daneben erscheint.

In der Datei index.php steht:

PHP:
		<table>
			<tr>
				<td><a href="index.php?navibar=navi_fh.html">Hauptlink 1</a></td>
				<td><a href="index.php?navibar=navi_sl.html">Hauptlink 2</a></td>
				<td><a href="index.php?navibar=navi_ko.html">Hauptlink 3</a></td>
			</tr>
		</table>
	
	<?php if(isset($_GET["navibar"])){include($_GET["navibar"]);} ?></div>
	<?php if(isset($_GET["site"])){include($_GET["site"]);} ?></div>

In den Dateien, die mit der Variablen navibar referenziert werden, steht folgendes:

PHP:
<p>Hauptlink 1</p>
<hr width="50px" align="left"/>
<a href="index.php?site=hauptlink1_unterlink1.html">Unterlink 1</a><br />
<a href="index.php?site=hauptlink1_unterlink2.html">Unterlink 2</a><br />

Ich denke, sowas müsste doch irgendwie mit einer if-anweisung zu lösen sein? Hab das untenstehende probiert, aber ich glaub ich mach da was falsch....:rolleyes:

PHP:
	<?php if(isset($_GET["navibar"])){include($_GET["navibar"]);} ?></div>
	<?php if(isset($_GET["navibar"]) AND isset($_GET["site"])){include($_GET["navibar"]) AND include($_GET["site"];} ?></div>

mfg, metalwilli
 
Unabhängig von deinem Problem, solltest du dich unbedingt gegen CrossSite Scripting Lücken schützen, in dem du eine White List beim Includen benutzt ([phpf]switch[/phpf] als Stichwort).
 
Sag mal müssten die Unterlinks nicht so aussehen:

PHP:
<a href="index.php?site=hauptlink1_unterlink1.html?navibar=navi_xx.html">Unterlink 1</a>

Damit mit den Unterlinks auch die Variable für die Navigationsseite mit übergeben wird.
 
Hallo!

Hab das mal geändert so wie du gemeint hast, funkt aber auch net.

http://metalwilli.me.ohost.de/test/

Was ich auch mal gemacht habe ist, dass ich die Variable $site auf der index.php Seite ausgelesen habe. Wie man sieht wird sie auch korrekt übergeben. Jedoch scheitert es dann beim include der Variablen! Wie kann das sein, ein include vorher hat es ja noch funktioniert?

mfg, metalwilli

// EDIT

Noch mal was Interessantes:

http://metalwilli.me.ohost.de/ueberschrieben/index.php

PHP:
$navibar=$_GET["navibar"];
if(isset($navibar)) {
include($navibar);
} 	

if(isset($site)){
echo "<b>Das ist der Link, der als Dollar site übergeben wird --> passt!:</b> $site <br>";
echo "<b>Das ist die Navibar, die leider überschrieben wurde von Dollar site:</b> $navibar";
include("".$site."");

Die Variable $navibar wird bei Klick auf den Hauptlink gesetzt und geladen. Aber dann bei Klick auf einen Unterlink nimmt die Variable $site den Wert des Unterlinks korrekt and und überschreibt die $navibar....

mfg, metalwilli
 
Wenn ich das richtig sehe, sind die Links von den Unterlinks falsch

http://metalwilli.me.ohost.de/ueberschrieben/index.php?site=hauptlink3_unterlink1.html?navibar=navi_ko.html

müsste es nicht wie folgt lauten

http://metalwilli.me.ohost.de/ueberschrieben/index.php?site=hauptlink3_unterlink1.html&navibar=navi_ko.html

// edit
arg, ich hader gerade mit den formatierungs tags hier vom forum.

Das ist imho richtig, würdest du einen weiteren Wert anhängen wollen würdest du den mit "&" anhängen, der erste Wert hinter dem File wird mit "?" angehängt.
 
DANKE, Mairhofer, Problem gelöst!;)

Hab dann nochmals die if-anweisung im index.php leicht modifiziert und jetzt gehts!

PHP:
$navibar=$_GET["navibar"];
if(isset($navibar) && !isset($site)) {
include($navibar);
} 	
elseif(isset($navibar,$site)){
include($navibar);
include($site);
}

mfg, metalwilli
 
Kein problem
Bedenke die Sicherheitslücken die sich auf tun, wenn man seiten aus der URI ($_GET) direkt included. Dazu gibts aber genügend Beiträge hier im Forum oder im Web.
 
Zurück