2017-05-09 2 views
-1

は私がやろうとしていますとの声明場合、またはそれは文句を言わない私が試したもう一つは、PHPの場合OR方法?

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

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

上記リターンで

「」

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

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

上記のコードは、予期しない構文を言う仕事...正しいページからリクエストされたにもかかわらず

また、1つのコードにORがない場合は、正常に動作しますが、追加しようとしているときは機能しません 二番目。

私は間違っていますか?

UPDATE:これは!=!==を交換し、&&を使用するので、ちょうど誰も

+1

ロジックが無効です。 'OR'の代わりに' && 'を使います。 –

+0

@u_mulderは答えのようです。なぜそれをコメントに入れますか?たぶん少しのコードといくつかの追加の説明があります。 – Yunnosch

答えて

2

ありがとうWEBSITE1としてWEBSITE2にCURLOPT_REFERERを設定し、そして

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

としてそれを守っない理由を働いていないことができませんでしたか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
|| 

はPHPでOR演算子をですあなたがチェックしているということです。

しかし、ここでは、次のような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!"; 
    } 
関連する問題