我想在執行重定向之前檢查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 –