我发现这段代码通过php检测浏览器:
<?php
$msie = strpos($_SERVER["HTTP_USER_AGENT"], 'MSIE') ? true : false;
$firefox = strpos($_SERVER["HTTP_USER_AGENT"], 'Firefox') ? true : false;
$safari = strpos($_SERVER["HTTP_USER_AGENT"], 'Safari') ? true : false;
$chrome = strpos($_SERVER["HTTP_USER_AGENT"], 'Chrome') ? true : false;
?>
<?php
//Firefox
if ($firefox) {
echo 'you are using Firefox!';
echo '<br />';
}
// Safari or Chrome. Both use the same engine - webkit
if ($safari || $chrome) {
echo 'you are using a webkit powered browser';
echo '<br />';
}
// IE
if ($msie) {
echo '<br>you are using Internet Explorer<br>';
echo '<br />';
}?>
但是代码不包括可能的IE版本。 做了这样的事情:
// IE7
if ($msie7) {
echo '<br>you are using Internet Explorer 7<br>';
echo '<br />';
}
有人可以帮我吗?希望改进代码,包括支持IE版本。
答案 0 :(得分:6)
试试这个:
<?php
$ie6 = (ereg("MSIE 6", $_SERVER["HTTP_USER_AGENT"])) ? true : false;
$ie7 = (ereg("MSIE 7", $_SERVER["HTTP_USER_AGENT"])) ? true : false;
$ie8 = (ereg("MSIE 8", $_SERVER["HTTP_USER_AGENT"])) ? true : false;
if ($ie6 || $ie7 || $ie8) {
// Do fallback stuff that old browsers can do here
echo "You are using IE";
} else {
// Do stuff that real browsers can handle here
}
?>
答案 1 :(得分:1)
这个PHP函数非常有效。但我不知道如何让PHP区分不同版本的“MSIE”
<?php
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ){
header( 'Location: http://www.domain.com' ) ;
}
?>
非常感谢
答案 2 :(得分:-1)
没有可靠的方法让PHP知道,也不关心哪个浏览器正在调用它。根据设计,服务器端语言没有理由在执行代码之前考虑使用哪种浏览器。 $_SERVER['HTTP_USER_AGENT']
充其量只是一个垫片而且频繁变化,以至于你必须尽快让它过时而不是迟早。
作为Web开发人员的唯一目标应该是编写CSS和JS代码,这些代码可以跨浏览器兼容,也可以使用条件<!--[if IE 8]><![endif]-->
垫片,显然已被IE11删除了......
在JS中,您需要在调用之前检查函数是否存在,或者确定支持它的JS引擎是否在浏览器目标范围内可用。
话虽如此,是的,有些图书馆试图破译$_SERVER['HTTP_USER_AGENT']
,但信息来源首先是有缺陷的,所以从您尝试使用它的那一刻起,图书馆就没用了。
这是一些跨浏览器的CSS:
.someClass{
-webkit-box-shadow: 0 0 5px black;
-moz-box-shadow: 0 0 5px black;
box-shadow: 0 0 5px black;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
/* IE supports nothing above? Too bad, it will ignore it */
}