2017-05-09 48 views
-1

我試圖做的,如果用語句或,但它不會工作PHP如果OR如何?

$ref = $_SERVER['HTTP_REFERER']; 
    $refData = parse_url($ref); 

    if($refData['host'] !== 'website1.com','website2.com') { 
    die("..."); 
    }else{ 
<content> 
} 

上面的代碼表示意外語法「」

另外一個我想是

$ref = $_SERVER['HTTP_REFERER']; 
    $refData = parse_url($ref); 

    if($refData['host'] !== 'website1.com' OR $refData['host'] !== 'website2.com') { 
    die("..."); 
    }else{ 
<content> 
} 

以上的回報...即使從正確的頁面請求

此外,當代碼中沒有OR時,它可以正常工作,但不會在嘗試添加時 第二。

我在做什麼錯?

UPDATE:無法得到這個工作,沒有理由這樣剛剛成立CURLOPT_REFERER上WEBSITE2爲WEBSITE1和,並保持它作爲

if($refData['host'] !== 'website1') { 

謝謝大家

+1

您的邏輯無效。 'OR'使用'&&' –

+0

@u_mulder看起來像答案。爲什麼把它放在評論中?也許有一些代碼和一些額外的解釋。 – Yunnosch

回答

2

更換!==!=和使用&&OR = ||這取決於你的需要

 $ref = $_SERVER['HTTP_REFERER']; 
    $refData = parse_url($ref); 

    if($refData['host'] != 'website1.com' || $refData['host'] != 'website2.com') { 
    die("..."); 
    }else{ 
echo 'hi testing'; 
//run your php code here 
} 

你問題是,你正在檢查如果兩者不相同

`!=` (Not equal) 



    `!==` (Not identical) 

&& example $x && $y True if both $x and $y are true 
|| example $x || $y True if either $x or $y is true 
+0

這並不完全沒有錯誤的工作只是返回「...」 – in00b

+0

更換或''||我會改正 –

+0

測試,現在我更新了我的答案 –

0
|| 

是OR運算符在PHP。

但在這裏,你需要一個AND運算&& 像這樣:

if($refData['host'] !== 'website1.com' && $refData['host'] !== 'website2.com') 
1

考慮使用in_array

$ref = $_SERVER['HTTP_REFERER']; 

    $refData = parse_url($ref); 

    $array_data = ["website1.com","website2.com"]; 

    if(in_array($refData, $array_data)) 
    { 
    echo "Do Something!"; 
    } 
    else 
    { 
    echo "Failed!"; 
    }