我有2个网址说
http://localhost/xyz?language=en
http://localhost/xyz?language=es
我想检查语言参数是否包含en / es以外的内容,然后它应该重定向到某些http://localhost/xyz/errorpage
为此,我有以下代码:
if(isset($_GET['language'])){
if(($_GET['language'] !== "en") || ($_GET['language'] !== "es")){
header('Location: /xyz/errorpage');
}
}
但实际上,当我执行2个网址中的任何一个或将language
参数的值设置为与en
/ es
不同的内容时:
http://localhost/xyz?language=en
http://localhost/xyz?language=es
http://localhost/xyz?language=esdfsdf
我被重定向到errorpage
无法理解代码的问题。
答案 0 :(得分:5)
替换||由&&。
原因:
您只有在不是en
而不是es
时才会重定向。
答案 1 :(得分:4)
将if语句更改为&&
而不是||
,否则您的条件将始终为false。
if(isset($_GET['language'])){
if($_GET['language'] !== "en" && $_GET['language'] !== "es"){
header('Location: /xyz/errorpage');
}
}
答案 2 :(得分:4)
你的情况不好,或者更好,操作员。
使用&&
代替||
或in_array()
。
if(($_GET['language'] !== "en") && ($_GET['language'] !== "es")) {
使用in_array()
功能:
if (!in_array($_GET['languge'], array('en', 'es'))) {
header ();
}
条件if ($a != 'x' || $a != 'y')
始终为true
,条件的第一部分或第二部分为真。没有别的办法。