如何判断微信浏览器

复制代码 代码如下:$user_agent = $_SERVER['HTTP_USER_AGENT'];if (strpos($user_金沙官网线上,agent, 'MicroMessenger') === false) { // 非微信浏览器禁止浏览 echo "HTTP/1.1 401 Unauthorized";} else { // 微信浏览器,允许访问 echo "MicroMessenger"; // 获取版本号 preg_match('/.*?(MicroMessenger/s*/', $user_agent, $matches); echo '
Version:'.$matches[2];}

在微信公众平台的开发过程中,我们有时需要开发网页并判断是否是是来自微信浏览器访问,本文介绍如何做出这一判断。

好吧,我也不能直接反驳,不过,这个确实非常不靠谱、拿数据说话吧。下面分别是 Android, WinPhone, iPhone 的 HTTP_USER_AGENT 信息。

一、$_SERVER数组

复制代码 代码如下:"HTTP_USER_AGENT": "Mozilla/5.0 (Linux; U; Android 4.1; zh-cn; Galaxy Nexus Build/Wind-Galaxy Nexus-V1.2) AppleWebKit/534.30 Version/4.0 Mobile Safari/534.30 MicroMessenger/5.0.1.352","HTTP_USER_AGENT": "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 920T)","HTTP_USER_AGENT": "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 Mobile/10B329 MicroMessenger/5.0.1",

$_SERVER是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些。

可以看到 WinPhone 根本就没有 MicroMessenger 所以无法判断、其实 userAgent 判断本来就是很假的事情、所以我觉得应该用 js 判断是否存在 WeixinJSBridge ,然后 ajax 给 phpphp检测到了然后返回真正的页面信息、期间加一个 “玩命加载中...” 这样就很和谐了、当然 ajax 的话,也是可以欺骗的,但是相对 userAgent 欺骗来说,就要麻烦一点了、不过我们的目的是检测是否是微信端,而不是欺骗的问题、具体代码我就不写了,因为最讨厌那种拿来主义了、无限的复制黏贴,而且有时候代码被过滤了一部分也不管、

二、获取HTTP_USER_AGENT

以下方法可获得

echo $_SERVER["HTTP_USER_AGENT"];

?>

在iPhone下,返回

Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2

在Android下,返回

本文由金沙官网线上发布于编程,转载请注明出处:如何判断微信浏览器

您可能还会对下面的文章感兴趣: