欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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 欺骗来说,就要麻烦一点了、
不过我们的目的是检测是否是微信端,而不是欺骗的问题、具体代码我就不写了,因为最讨厌那种拿来主义了、无限的复制黏贴,而且有时候代码被过滤了一部分也不管、