2016-07-25 14 views
0

Ich versuche, eine Funktion zu erstellen, die einen Teil der URL auf einer Seite überprüft und dann eine Navigationsleiste basierend auf den Ergebnissen entweder ein- oder ausblendet. Ich kann die Funktion zum Funktionieren bringen, wenn sie nach nur einer Zeichenkette sucht, aber das Hinzufügen von verschiedenen Zeichenketten in einer OR-Anweisung nichts tut.PHP OR-Anweisung funktioniert nicht

Unten ist ein Beispiel für die Funktion mit einem einzigen funktionstüchtig ...

<?php $url = 'http://' . $_SERVER['SERVER_NAME'] . $SERVER['REQUEST_URI']; 
if (strpos($url,'/login') == false){ ?> 

    <nav>Navbar</nav> 

<?php } ?> 

Dies verhindert richtig navbar von zeigen auf der „Login“ Seite nach oben. Aber wenn ich auch die navbar wollen Seite nicht zeigen, bis auf den „Registrieren“ und tun so etwas wie dieses ...

<?php $url = 'http://' . $_SERVER['SERVER_NAME'] . $SERVER['REQUEST_URI']; 
if (strpos($url,'/login') == false || strpos($url,'/register') == false){ ?> 

    <nav>Navbar</nav> 

<?php } ?> 

... die Funktionalität nicht mehr funktioniert ganz und die navbar zeigt auf allen Seiten. Also, wie kann ich meine OR-Anweisung so verfeinern, dass sie richtig funktioniert? Vielen Dank!

+1

Hinweis: Verwenden Sie nicht 'strpos' lose, benutzen Sie' '=== – Ghost

Antwort

2

Logic Fehler. Ändern Sie den or Zustand and

if(strpos($url,'/login')==false || strpos($url,'/register')==false) 

sein sollte

if(strpos($url,'/login')===false && strpos($url,'/register')===false) 
+0

Ja, das hat geklappt. Danke BeetleJuice. –

2

Sie möchten ein && ... nicht ein ||. Denn Sie möchten die $url bis nicht enthalten "/login" AND "/register". Sonst wird es immer wahr sein.

+0

Recht sind Sie! Danke threadp. –

0

versuchen, mit() wie folgt aus:

if ((strpos($url,'/login') === false) || (strpos($url,'/register') === false)){ ?> 
+0

Hey, ich habe es geschossen, aber es tut auch nichts. –