如何使用 PHP 确定用户的浏览器?

3
如何使用PHP确定用户的浏览器?
如果用户的浏览器是IE,则变量$alert="onbeforeunload",如果不是IE,例如Firefox(else),则$alert="onload"。
非常感谢您的帮助。
另请注意,我无法在我的PHP服务器上安装browscap.ini。

1
你是否正在尝试在Javascript中设置某个事件被挂钩的方式?如果是这样,请不要在PHP中处理此问题。请在JS中进行检测。 - Dan
JavaScript的检测很好。我只想在检测结束时在PHP中设置这两个变量。希望这样说得清楚。 - ron8
4个回答

2

请看看这段代码是否适用于您

<?php
function detect_ie(){
    return (sizeof(explode("MSIE",$_SERVER['HTTP_USER_AGENT'])) > 1);
}

if (detect_ie())
    $event = "onbeforeunload";
else
    $event = "onload";

?>

1

你做不到。没有100%的准确性。最好的方法是检查用户代理,但是用户可以选择不提供它,或者伪造它,因此尽量避免依赖它。

$ua = $_SERVER['HTTP_USER_AGENT'];

如果浏览器是IE,它应该(大致)匹配(其中#是一个数字)
Mozilla/#.0 (compatible;  MSIE #.##;

对应的正则表达式可能是这样的

'~^Mozilla/[0-9]\.0 (compatible;\s+MSIE~i'

或者你可以直接检查字符串 "MSIE",这样会更简单,稍微宽松一些。

但正如 @Michal 所说,get_browser 手册页面 上还有其他(更好的)实现方法。


好的。但是我该如何将此查询简化,以显示浏览器是IE还是Firefox?谢谢。 - ron8
有时候用户在手册中的评论非常有帮助。http://www.php.net/manual/en/function.get-browser.php#97154 - Michał Mech
你只能计算这个,但永远不会确定。最后你能做的就是找到最佳的正则表达式查询。 - Michał Mech
php.net/manual/zh/function.get-browser.php#97154 无法正常工作。我看不出有什么问题。 - ron8

0

使用$_SERVER['HTTP_USER_AGENT']

检查它是否直接后跟一个数字包含“IE”。

我宁愿在JavaScript中完成这个任务。

if (typeof window.onbeforeunload !== "undefined") window.onbeforeunload = myFunc;
else window.onunload = myFunc;

0

Javascript库更好地检测和处理不同的浏览器行为。只需让像jQuery这样成熟的库来处理,你就会没问题。


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