php判断页面是否是微信打开的示例(微信打开网页)
程序员文章站
2023-11-21 13:55:22
复制代码 代码如下:$user_agent = $_server['http_user_agent'];if (strpos($user_agent, 'micromess...
复制代码 代码如下:
$user_agent = $_server['http_user_agent'];
if (strpos($user_agent, 'micromessenger') === false) {
// 非微信浏览器禁止浏览
echo "http/1.1 401 unauthorized";
} else {
// 微信浏览器,允许访问
echo "micromessenger";
// 获取版本号
preg_match('/.*?(micromessenger\/([0-9.]+))\s*/', $user_agent, $matches);
echo '<br>version:'.$matches[2];
}
好吧,我也不能直接反驳,不过,这个确实非常不靠谱、
拿数据说话吧。
下面分别是 android, winphone, iphone 的 http_user_agent 信息。
复制代码 代码如下:
"http_user_agent": "mozilla/5.0 (linux; u; android 4.1; zh-cn; galaxy nexus build/wind-galaxy nexus-v1.2) applewebkit/534.30 (khtml, like gecko) 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 (khtml, like gecko) mobile/10b329 micromessenger/5.0.1",
可以看到 winphone 根本就没有 micromessenger 所以无法判断、其实 useragent 判断本来就是很假的事情、所以我觉得应该用 js 判断是否存在 weixinjsbridge ,然后 ajax 给 php
php检测到了然后返回真正的页面信息、期间加一个 “玩命加载中...” 这样就很和谐了、当然 ajax 的话,也是可以欺骗的,但是相对 useragent 欺骗来说,就要麻烦一点了、
不过我们的目的是检测是否是微信端,而不是欺骗的问题、具体代码我就不写了,因为最讨厌那种拿来主义了、无限的复制黏贴,而且有时候代码被过滤了一部分也不管、