2016-07-25 85 views
0

我正在嘗試創建一個函數來檢查頁面上的部分URL,然後根據結果顯示或隱藏導航欄。如果它只檢查一個字符串,但是在OR語句中添加不同的字符串不會執行任何操作,我可以使函數正常工作。PHP OR聲明不起作用

下面是一個帶有單個條件工作函數的例子...

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

    <nav>Navbar</nav> 

<?php } ?> 

這正確地防止了導航欄從表示「登錄」頁面上向上。但是,如果我還想導航欄的「註冊」頁面上顯示不出來,做這樣的事情...

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

    <nav>Navbar</nav> 

<?php } ?> 

...功能停止工作完全和導航欄顯示出來的所有網頁上。 那麼,如何優化我的OR語句以使其正常工作?謝謝!

+1

注:請不要使用'鬆散strpos',使用''===右鍵 – Ghost

回答

2

邏輯缺陷。更改or條件and

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

應該

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

是的,這是成功的。謝謝BeetleJuice。 –

2

你想要一個&& ...不是||。因爲您希望$url而不是包含"/login""/register"。否則它永遠是真的。

+0

你!感謝threadp。 –

0

嘗試用()是這樣的:

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

嘿,我給了它一個鏡頭,但它也沒有做什麼。 –