ZITAT(Thomas @ 17.04.2007 - 13:45)

Lass dir mal anzeigen, was mit
HTML
<?php
echo basename($_SERVER['PHP_SELF']);
?>
ausgegeben wird und ob das jeweils mit einem der Indizes des Arrays übereinstimmt.
Eine Anmerkung und ein Trick:
Anmerkung: $_SERVER["PHP_SELF"]
soll manipulierbar sein (habe ich gelesen, ohne es beweisen zu können), daher kann man als Alternative $_SERVER["SCRIPT_NAME"] nehmen.
Trick: Um ein auf diese Art erzeugtes Menü in jeder Verzeichnisebene verwenden zu können, sollte die Notation verändert werden. Als Beispiel nehme ich mal Andreas' Menü und verteile ein paar Seiten in Unterverzeichnisse. Die Startseite und die Anfahrtsbeschreibung liegen im Wurzelverzeichnis der Website (per PHP mit $_SERVER["DOCUMENT_ROOT"] zu ermitteln, normalerweise das Verzeichnis in dem die Startseite liegt.), die Seite mit dem Kontaktformular und das Impressum liegen im Unterverzeicnis "kontakt".
Außerdem ist es mit einer kleinen Änderung möglich, aus dem Link zur momentan geladenen Seite einen Menüpunkt
ohne Verlinkung zu machen. Warum sollte die aktuelle Seite auch mit sich selbst verlinkt sein.
das Array:
QUELLTEXT
<?php
$url = array(
"/index.php"=>"Home",
"/anfahrt.php"=>"Anfahrt",
"/kontakt/kontakt.php"=>"Kontakt",
"/kontakt/impressum.php"=>"Impressum");
die Verarbeitung:
QUELLTEXT
<?php
echo '<ul>';
while(list($key, $val) = each($url)){
echo '<li>';
if (strstr($_SERVER['SCRIPT_NAME'],$key))
{
echo '<span id="current">'.$val.'</span>';
}
else
{
echo '<a href="'.$key.'">'.$val.'</a>';
}
echo '</li>'."\n";
}
echo '</ul>';
?>
Ich habe die Dateinamen im Unterschied zu Andreas' Lösung vollständig in das Array geschrieben. Ansonsten funktioniert alles gleich, bis auf die Tatsache, dass der Menüpunkt der aktuellen Seite
kein Link ist. Der allen Pfaden vorangestellte Schrägstrich/Slash ("/") sorgt dafür, dass ein Browser davon ausgeht, dass die Angaben vom Domainnamen aus gesetzt sind (Home: www.example.com/index.php, Impressum: www.example.com/kontakt/impressum.php). Egal, in welchem Verzeichnis die aufgerufene Seite liegt, das Menü enthält
immer die richtigen Pfade zu den anderen Seiten.
Das Element <span> verwende ich, damit die Formatierung in allen graphischen Browsern gleich dargestellt wird. Ohne dieses zusätzliche Element müsste man sich mit dem fehlerhaften Boxmodel des MSIE herumschlagen.
Tschö, Auge