我想在执行重定向之前检查BOTH $ _GET条件是否为真,但是我的代码只检查第二条是否为真。
这是我有:
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if (strpos($url,'this-is-an-example-post') !== false) {
if($_GET['utm_campaign']==testing123 && $_GET['utm_source']==testing456) {
function preserve_qs() {
if (empty($_SERVER['QUERY_STRING']) && strpos($_SERVER['REQUEST_URI'], "?") === false) {
return "";
}
return "?" . $_SERVER['QUERY_STRING'];
}
header("Location: http://example123.com/this-is-an-example-post" . preserve_qs());
exit;
}
}
它在做什么,如果我设置utm_campaign来=是testing123本身,它不会重定向。这很好,我希望它们都需要。如果我将utm_campaign设置为= testing123并将utm_source设置为= tests456,那么它确实重定向,至今为止还不错。现在,如果我只设置了utm_source = tests456,它也会重定向,这意味着它只检查第二个条件是否为真,但我需要两者都为true或脚本退出,而且我似乎无法弄清楚为什么它没有按照它应该的方式工作。
这是在一个WordPress的header.php文件,不知道它是否有所作为。
您在if语句的分支中声明'preserve_qs',所以如果它不执行,函数没有定义。除此之外,除非定义了这些常量,否则应该将'testing123'和'tests456'更改为''tests456''和''''''''。 –
preserve_qs和header是相同的if语句,所以它不会发生太大的变化...... – user3528269
错误报告会抛出一些关于未定义常量的东西。 http://php.net/manual/en/function.error-reporting.php –