nff 发表于 2015-2-20 06:17:54

找人写了个过滤ua的脚本,发现过滤不干净,请教下

<?php
$useragent=$_SERVER['HTTP_USER_AGENT'];
$needle='Chrome';
$ps=strstr($useragent, $needle);
if($ps) echo '<script>window.location.href="http://www.baidu.com";</script>';
echo "let's go";
?>

脚本就是这样, 举例就是将chrome浏览器跳转到百度,但是设置800人每小时的访问测试发现有不少漏网之鱼, 写的人说是并发多了,服务器忙不过来的原因,请问高手到底是什么原因,有没有办法优化下,谢谢了,祝大家新年快乐!

whitingday 发表于 2015-2-20 10:46:45

<?php

echo '<script>if(!!window.chrome){window.location.href="http://www.baidu.com";}</script>';
echo "let's go";
?>
OR
直接用js<script>if(!!window.chrome){window.location.href="http://www.baidu.com";}</script>

simon611 发表于 2015-2-20 11:29:44

用正则表达式去匹配你想要过滤的字符

aabbccli 发表于 2015-2-20 13:39:06

<?php
$useragent=$_SERVER['HTTP_USER_AGENT'];
$needle='你想要跳转的关键字';
$ps=strstr($useragent, $needle);
if($ps) echo '<script>window.location.href="http://www.baidu.com";</script>';
echo "let's go";
?>

whitingday 发表于 2015-2-20 18:55:17

whitingday 发表于 2015-2-20 10:46


<script>
var is_keyword = navigator.userAgent.indexOf('wow64') > -1;
if(is_keyword){window.location.href="http://www.baidu.com";}
</script>
试试

foxconndmd 发表于 2015-2-20 19:56:11

这类问题适合用web server处理多好。

aabbccli 发表于 2015-2-20 20:31:59

aabbccli 发表于 2015-2-20 13:39


$needle是个变量,你想过滤哪个词,就设置哪个词

nff 发表于 2015-2-21 07:33:07

foxconndmd 发表于 2015-2-20 19:56
这类问题适合用web server处理多好。

谢谢帮忙

nff 发表于 2015-2-21 07:34:04

aabbccli 发表于 2015-2-20 20:31
$needle是个变量,你想过滤哪个词,就设置哪个词

谢谢帮忙

nff 发表于 2015-2-21 07:34:44

whitingday 发表于 2015-2-20 18:55
var is_keyword = navigator.userAgent.indexOf('wow64') > -1;
if(is_keyword){window.location.href=" ...

是正常可以用,但是还是不干净,不知道怎么回事,估计就是服务器忙不过来吧

wintop 发表于 2015-2-21 11:31:53

if(preg_match("/chrome/i",$useragent)){
echo " i am a chrome user";
}

小狠 发表于 2015-2-21 12:18:31

装个IM 啥都解决了

booday 发表于 2015-2-21 12:44:22

有可能是大小写的问题,strstr 和 indexOf 都是大小写敏感

billy 发表于 2015-2-21 13:33:01

为什么不用php header这样的跳转而用js代码?是不是js屏蔽的问题?

河小马 发表于 2015-2-22 03:34:02

用head 跳转

不要用js
页: [1] 2
查看完整版本: 找人写了个过滤ua的脚本,发现过滤不干净,请教下