Menüpunkt nicht auf der index.php anzeigen.

Jan-Frederik Stieler

Monsterator
Moderator
Hallo,
ich bin noch ein extremer Neuling in Sachen PHP selberschreiben.
Ich habe nun das problem das ich überprüfen will auf welcher Seite ich mich befinde und dann entsprechendes Menü anzeigen lassen will.
Ich brauche ein Logout-Menü nicht auf der Login-Seite.
Leider funktioniert das nicht, das Menü wird weiterhin auf der index.php angezeigt.

PHP:
<div class="navbar navbar-inverse navbar-fixed-top">
    <div class="navbar-inner">
        <div class="container">
            <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </a>
            <a class="brand" href="/">be Colab</a>
			
          	<div class="nav-collapse collapse">
              <ul class="nav">
                  <li class="divider-vertical"></li>
                  <li><a href="/index.php"><i class="icon-home icon-white"></i> Home</a></li>
              </ul>
                <?php
                if ($_SERVER['PHP_SELF'] === 'index.php') {
					echo '';	
				}	
				else {	
					echo '
					<div class="pull-right">
	        	        <ul class="nav pull-right">
							<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Welcome,'. $_SESSION["username"] .'<b class="caret"></b></a>
								<ul class="dropdown-menu">
            	            	    <li><a href="logout.php"><i class="icon-off"></i> Logout</a></li>
                	        	</ul>
                    		</li>
						</ul>
					</div>';
				}
				?>
            </div>
        </div>
    </div>
</div>

Was mach ich falsch?

Viele Grüße
 
Gib dir testhalber mal $_SERVER['PHP_SELF'] aus (mit echo) und schau was da steht.
Meine Vermutung ist, dass es '/index.php' heißen müsste.
 
Hi,
danke. Momentan läuft das Lokal in einem Unterverzeichnis.
Ich muss das Verzeichnis mit angeben. Gibt es eine Möglichkeit das Verzeichnis wegzulassen so dass ich beim Upload auf den Webserver das nicht mehr ändern muss?

Grüße
 
Wenn es nur die index.php betrifft, könntest Du es auch so lösen:
PHP:
if (preg_match ('/index.php/', $_SERVER['SCRIPT_NAME']) == true)  {
  echo 'kein Menü';
}
else  {
  echo 'Menü';
}
 
Wenn es nur die index.php betrifft, könntest Du es auch so lösen:
PHP:
if (preg_match ('/index.php/', $_SERVER['SCRIPT_NAME']) == true)  {
  echo 'kein Menü';
}
else  {
  echo 'Menü';
}


Nimmst du auch nen Vorschlaghammer um nen Bild aufzuhängen? :p
Wofür brauchst du hier den regulären Ausruck? str_pos oÄ würde es auch tun. Du könntest übrigens auch die Konstante __FILE__ benutzen, in Kombination mit pathinfo() oÄ.
 
Hi,
wahrscheinlich meint er das dies etwas langsam ist. Auch wenn ich davon nix gemerkt habe.

Man kann das ja auch so schreiben:
PHP:
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

if (false !== strpos($url,'index.php')) {
	echo 'Menü nicht anzeigen';
} else {
	echo 'Menü anzeigen';
}

Wie du siehst hab ich ein wenig im Manual gelesen :).

Grüße
 
So reicht das:

PHP:
if (false !== strpos($_SERVER['REQUEST_URI'],'index.php')) {
    echo 'Menü nicht anzeigen';
} else {
    echo 'Menü anzeigen';
}

@Registrierer: Natürlich macht das nur einen minimalen Performanceunterschied aus, aber reguläre Ausdrücke sind eifnach dafür vorgesehen, um komplexere Suchmuster umzusetzen. Hier ist str_pos eifnach die schnellere und eifnachere Methode. (festes Suchmster)
 
Zurück