IF / ELSEIF内的php IF / ELSEIF

时间:2018-03-28 15:28:04

标签: php if-statement

您好,我有以下我一直在开发的php

<?php

$URI = $_SERVER['REQUEST_URI'];
$activepage = $_SERVER['SERVER_NAME'];
$country_code = $_SERVER["HTTP_CF_IPCOUNTRY"];

if (
    strpos($_SERVER["HTTP_USER_AGENT"], "facebookexternalhit/") !== false ||          
    strpos($_SERVER["HTTP_USER_AGENT"], "Facebot") !== false
) {
    // it is probably Facebook's bot
    if ($activepage=="www.example.co.uk") {
    $link = 'http://www.example.co.uk' . $URI;
    header("location:$link");
    exit;
    }
    elseif ($activepage=="test.example.co.uk") {
    $link = 'http://test.example.co.uk' . $URI;
    header("location:$link");
    exit;
    }
    elseif ($activepage=="www.example.us") {
    $link = 'http://www.example.us' . $URI;
    header("location:$link");
    exit;
    }

}
elseif {
    // that is not Facebook
    if ($activepage=="test.example.co.uk" & $country_code=="CA") {
    $link = 'http://www.example.us' . $URI;
    header("location:$link");
    exit;
    }
    elseif ($activepage=="test.example.co.uk" & $country_code=="US") {
    $link = 'http://www.example.us' . $URI;
    header("location:$link");
    exit;
    }
    elseif ($activepage=="test.example.us" & $country_code=="GB") {
    $link = 'http://www.example.co.uk' . $URI;
    header("location:$link");
    exit;
    }
    elseif ($activepage=="test.example.us" & $country_code=="UK") {
    $link = 'http://www.example.co.uk' . $URI;
    header("location:$link");
    exit;
    }

}



?>

第二个if / elseif工作正常,它本身看起来像这个

<?php

$URI = $_SERVER['REQUEST_URI'];
$activepage = $_SERVER['SERVER_NAME'];
$country_code = $_SERVER["HTTP_CF_IPCOUNTRY"];

if ($activepage=="www.example.co.uk" & $country_code=="CA") {
$link = 'http://www.example.us' . $URI;
header("location:$link");
exit;
}
elseif ($activepage=="www.example.co.uk" & $country_code=="US") {
$link = 'http://www.example.us' . $URI;
header("location:$link");
exit;
}
elseif ($activepage=="www.example.us" & $country_code=="GB") {
$link = 'http://www.example.co.uk' . $URI;
header("location:$link");
exit;
}
elseif ($activepage=="www.example.us" & $country_code=="UK") {
$link = 'http://www.example.co.uk' . $URI;
header("location:$link");
exit;
}

?>

但是当我把它放进这个

if (
    strpos($_SERVER["HTTP_USER_AGENT"], "facebookexternalhit/") !== false ||          
    strpos($_SERVER["HTTP_USER_AGENT"], "Facebot") !== false
) {
    // it is probably Facebook's bot
}
else {
    // that is not Facebook
}

它停止了一起工作。

我想要做的是让facebook bot进入使用该链接的网站但是如果它是普通用户就失败了,那么如果来自美国的用户点击英国网站他们被重定向,如果是来自英国的用户获得了他们被重定向的美国网站 - 使用cloudflares HTTP标头。

有关我可能在哪里出错的任何想法吗?

谢谢

2 个答案:

答案 0 :(得分:0)

您的第一个商家信息中没有elseif条件,这应该只是else

}
elseif {
    // that is not Facebook

应该是

}
else {
    // that is not Facebook

答案 1 :(得分:0)

你的其他如果陈述不正确。请参阅http://php.net/manual/en/control-structures.elseif.php

// it is probably Facebook's bot

if ( $activepage=="www.example.co.uk" ) {

    $link = 'http://www.example.co.uk' . $URI;
    header( "location:$link" );
    exit;

} elseif( $activepage=="test.example.co.uk" ) {

    $link = 'http://test.example.co.uk' . $URI;
    header("location:$link");
    exit;

} elseif( $activepage=="www.example.us" ) {

    $link = 'http://www.example.us' . $URI;
    header("location:$link");
    exit;

} else {

    //you need to do something here

}

如果您计划保留elseif( $activepage=="www.example.us" ) {,那么您需要添加一个else语句,就像我已添加到答案中一样。

否则,您可以将elseif( $activepage=="www.example.us" ) {更改为else( $activepage=="www.example.us" ) {

if语句的第二部分也有语法错误。

这就是你拥有的

   elseif ( $activepage=="test.example.us" & $country_code=="UK" ) {
       $link = 'http://www.example.co.uk' . $URI;
       header("location:$link");
       exit;
   }

您需要将其更改为else ( $activepage=="test.example.us" & $country_code=="UK" )或将其更改为

   elseif ($activepage=="test.example.us" & $country_code=="UK") {
        $link = 'http://www.example.co.uk' . $URI;
        header("location:$link");
        exit;

    } else {

        //do something here 

    }

主if语句也有语法错误。

这就是你拥有的

}elseif {
    // that is not Facebook

这就是它需要的

}else {
    // that is not Facebook