2017-11-15 22 views
0

私はお問い合わせフォームと製品フォームを持っています。私は、商品の価値があるかどうかを確認したいのですが、条件付きで合格することができます。

ブロークン・コード

// If visitor filled out the form on the "Contact Us" page (/contact/index.php) then no 'product' field is required. 
if ($_SERVER['HTTP_REFERER'] != "http://www.url.com/contact/index.php" || "http://url.com/contact/index.php") { 
    if(strlen($product) < 2) { 
     $errors[] = "<font color='red'>Please enter the product requesting.</font>"; 
    } 
} 

トラブルシューティング/デバッグコード

$serverValue = $_SERVER['HTTP_REFERER']; 
print "The value of SERVER is ". $serverValue; 
echo "<br />"; 
print $_SERVER['DOCUMENT_ROOT']."/contact/index.php";    
echo "<br />"; 

if ($_SERVER['HTTP_REFERER'] != "http://www.url.com/contact/index.php" || "http://url.com/contact/index.php" || "/home/url/public_html/contact/index.php") { 
//if ($_SERVER['HTTP_REFERER'] != $_SERVER['DOCUMENT_ROOT']."/contact/index.php") { 
print "This is NOT the Contact page"; 
} else { 
print "This IS the Contact page"; 
} 

トラブルシューティング/デバッグ出力

、SERVERの値はhttp://url.com/contact/index.phpです/home/url/public_html/contact/index.php これは、あなたが正しいHTTP_REFERERが渡されているが、それだけで正しく評価されないことを出力することで見ることができContactページ

ではありません。私が他のものを試していたところにコメントアウトされた行があります。私の上で簡単に行ってくださいIm PHPで新しいです。

さてさて、私は私が間違って何をしていたか理解していない成功

if ($_SERVER['HTTP_REFERER'] != "http://www.url.com/contact/index.php" || $_SERVER['HTTP_REFERER'] != "http://url.com/contact/index.php") { 
if(strlen($product) < 2) { 
$errors[] = "<font color='red'>Please enter the product requesting.</font>"; 
} 
} 

その他の考えでこれを試してみましたか?

+0

これは役に立ちました –

答えて

1

空でない文字列として正しく評価され、trueと評価されます。

そうで:

if ($_SERVER['HTTP_REFERER'] != "http://www.url.com/contact/index.php" 
    || true 
    || true) { 

結果で:

if (true) { 

if ($_SERVER['HTTP_REFERER'] != "http://www.url.com/contact/index.php" 
    || "http://url.com/contact/index.php" 
    || "/home/url/public_html/contact/index.php") { 

第2、第3のは常にtrueに評価するため、最初の条件が何であるかは重要ではありません。

リファラーをこれらの3つの文字列のいずれかにしたくない場合は、 gのように:

if (!in_array($_SERVER['HTTP_REFERER'] , [ 
    'http://www.url.com/contact/index.php', 
    'http://url.com/contact/index.php', 
    '/home/url/public_html/contact/index.php' 
]) { 
+0

!ありがとう – Gots2Know

関連する問題