2010-02-19 66 views
0

我正在寫一個PHP網站,並使用谷歌分析來跟蹤網站活動。PHP結合兩個負OR條件

我已經編寫了一個函數,用於回顯可以包含在常用站點頁腳中的跟蹤代碼。

問題是,我不希望它跟蹤我們辦公室的點擊率(我之前在Google Analytics的IP篩選器中得到的結果參差不齊,因此這次選擇了對其進行硬編碼),然後點擊管理頁面。

因此,僞代碼將是,

IF(PHP_SELF確實包含管理員)OR(IP地址不在辦公室) 回聲跟蹤代碼

我寫這個實際的方法是:

if (!((substr($_SERVER['PHP_SELF'], 0, 7) == '/admin/') || ($_SERVER['REMOTE_ADDR'] == 'xxx.xxx.xxx.xxx'))) { 

是最好的方法嗎?

我嘗試以下,但它沒有工作:

if ((substr($_SERVER['PHP_SELF'], 0, 7) != '/admin/') || ($_SERVER['REMOTE_ADDR'] != 'xxx.xxx.xxx.xxx')) { 
+0

我想你可以從谷歌分析管理中排除的IP不會忽略更好。 – chelmertz 2010-02-19 11:46:18

回答

4

De Morgan's laws意味着第二個應該使用&&而不是||

無論哪種方式都很好,基於這樣的事實,即沒有比較有副作用。

1

因爲您想在條件爲假時做某些事情(並且不採取其他措施),條件應爲負值。比較

// BAD 
if(something) { 
    ??? 
} else { 
    do the job 
} 

// GOOD 
if(not_something) 
    do the job 

所以,第二個選項是要走的路(|| - > & &,因爲已經建議)。

除此之外,early exits通常比複雜條件

function echo_counter() { 
    if(is_admin_page) 
     return; 
    if(intranet_ip) 
     return; 
    ...potentially some more conditions... 
    do the job 
}