我正在运行以下重定向脚本:
<?php
$badAgents = array('Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0');
if(in_array($_SERVER['HTTP_USER_AGENT'],$badAgents)) {
require("1.php");
} else {
require("2.php");
}
?>
然而,无论用户代理如何,每个访问者都会被发送到“2.php”。例如我进入Firefox,我得到2.php,我进入Internet Explorer,我看到2.php。
请有人指导我做错了吗?
感谢您的时间
答案 0 :(得分:3)
检查我们的逻辑。
这是你正在使用的伪逻辑:
除非用户使用正确版本的Firefox访问您的网页,否则您使用的代码将不会使用1.php。
我还建议您更改代码,如下所示:
if (stripos($_SERVER['HTTP_USER_AGENT'], 'firefox') === false) {
require '2.php';
} else {
require '1.php';
}
答案 1 :(得分:0)
你的字符串有点长到匹配。当你只过滤一个简短但明确的字符串如 Firefox 时,它会更好。
<?php
if(stripos($_SERVER['HTTP_USER_AGENT'], 'firefox') !== false)) {
require("1.php");
} else {
require("2.php");
}
?>
然后你的变化比“规则”匹配更大。
第二,有一些功能可以解析用户代理,例如 get_browser ,您可以获得更好的结果。