2015-02-04 53 views
-1

我試圖做的是檢查當前域2個不同域+一些變量所以目前我有這樣的:檢查當前域和PHP變量+冷凝代碼

if ($_SERVER['HTTP_HOST']=="http://example1.com" && $var1 || 
$_SERVER['HTTP_HOST']=="http://example1.com" && $var2 || 
$_SERVER['HTTP_HOST']=="http://example1.com" && $var3) { 
      header("Location: page1.php?". $_SERVER['QUERY_STRING']); 
     } 

    elseif ($_SERVER['HTTP_HOST']=="http://example2.com" && $var1 || 
$_SERVER['HTTP_HOST']=="http://example2.com" && $var2 || 
$_SERVER['HTTP_HOST']=="http://example2.com" && $var3) { 
      header("Location: page2.php?". $_SERVER['QUERY_STRING']); 
     } 
    else { echo "..." 

} 

我只有3每個變量,但總共有10個,那麼壓縮此代碼的最佳方式是什麼,所以我不使用這麼多的代碼行?

回答

0

我覺得你不需要HTTP條件每次。

if($var1 || $var2 || $var3) { 
    if(strpos($_SERVER['HTTP_HOST'], "example1.com") !== false) { 
     header("Location: page1.php?". $_SERVER['QUERY_STRING']); 
    } elseif(strpos($_SERVER['HTTP_HOST'],"example2.com") !== false) { 
     header("Location: page2.php?". $_SERVER['QUERY_STRING']); 
    } 
} 

或者你可以在2個單行中做到這一點。

if(strpos($_SERVER['HTTP_HOST'], "example1.com") !== false && ($var || $var2 || $var3) { 
    header("Location: page1.php?". $_SERVER['QUERY_STRING']); 
} 
+0

在喬·鮑比的代碼,如果沒有VAR1,VAR2的,VAR3爲真,否則,代碼也運行。 – hellcode

+0

是的,然後它從我們的兩個答案混合而成。 – Stony

+0

@Stony得到錯誤'解析錯誤:語法錯誤,意外'&&''底部的代碼。我用1'$ var'試過,看看能不能解決任何問題,但它沒有 –

0
$else = false; 
if($var1 or $var2 or $var3) { 
    if($_SERVER['HTTP_HOST'] == "http://example1.com") { 
     header("Location: page1.php?". $_SERVER['QUERY_STRING']); 
    } elseif($_SERVER['HTTP_HOST']=="http://example2.com") { 
     header("Location: page2.php?". $_SERVER['QUERY_STRING']); 
    } else { 
     $else = true; 
    } 
} else { 
    $else = true; 
} 
if($else) { 
    echo "..."; 
} 
0
$domain = $_SERVER['HTTP_HOST']; 
if($domain == 'http://example1.com' && ($var1 || $var2 || $var3)){ 
    header("Location: page1.php?". $_SERVER['QUERY_STRING']); 
}elseif($domain == 'http://example2.com' && ($var1 || $var2 || $var3)){ 
    header("Location: page2.php?". $_SERVER['QUERY_STRING']); 
}else{ 
    echo "..." 
}