OR语句的替代方案

5
我想做的是根据国家代码重定向国家,使用以下脚本。下面的代码不起作用。经过一些研究,我发现我必须使用一个或语句,或者至少这就是我认为我需要的,但我的问题是有没有比or语句更简单的方法?正如您所看到的,我正在检查很多国家。
<script language="JavaScript" src="http://j.maxmind.com/app/geoip.js"></script>
<script language="JavaScript">

var country= geoip_country_code();

if(country = "UK","CA","DE","DK","FR","AU","SE","CH","NL","IT","BE","AT","ES","NO","IE","FI","GB","US")      
{
window.location.href='http://www.google.com'; 
}
else   
{
window.location.href='http://www.yahoo.com'; 
}
</script>

@JonathonReinhart 服务器端也很容易被绕过。 - Brad
2
感谢您的评论,但这对我所需的足够好了。 - user2716614
@JonathonReinhart 重点是安全在这里根本无关紧要。通过IP地址进行区域锁定对于普通用户来说是无效的。此外,他只是进行了重定向。 - Brad
@Brad 理解了。不过我还是会在服务器端处理它。 - Jonathon Reinhart
2个回答

12

你应该可以这样做:

var countryCodes = ["UK","CA","DE","DK","FR","AU","SE","CH","NL","IT","BE","AT","ES","NO","IE","FI","GB","US"];
var country= geoip_country_code();
if (countryCodes.indexOf(country) !== -1)
{
    ...
}

1
@BenS. ——无论使用!=还是!==都没有关系,我建议使用!=,因为没有理由使用!== - RobG
@RobG 我知道 - 我只是指一般来说使用 !== 是一个好习惯,除非你有特定原因不使用,因为在大多数情况下它可能是你的本意。 - Ben S.

0
你可以这样做:
var country = 'US';
var countries = 'UK CA DE DK FR AU SE CH NL IT BE AT ES NO IE FI GB US';

if (countries.match(country.toUpperCase())) {
  // matched
} else {
  // no match
}

但客户端很容易伪造其来源。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接