php判断页面是否是微信打开的示例(微信打开网页)


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

PHP 相关文章推荐
怎样在UNIX系统下安装php3
Oct 09 PHP
第七节--类的静态成员
Nov 16 PHP
PHP答题类应用接口实例
Feb 09 PHP
PHP实现连接设备、通讯和发送命令的方法
Oct 13 PHP
php封装的连接Mysql类及用法分析
Dec 10 PHP
PHP中的use关键字及文件的加载详解
Nov 28 PHP
浅谈PHP的数据库接口和技术
Dec 09 PHP
实例分析基于PHP微信网页获取用户信息
Nov 24 PHP
Laravel 关联模型-关联新增和关联更新的方法
Oct 10 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
Oct 15 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 PHP
php TP5框架生成二维码链接
Apr 01 PHP
php检测文件编码的方法示例
Apr 25 #PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
Apr 25 #PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 #PHP
php除数取整示例
Apr 24 #PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
Apr 24 #PHP
PHP模板引擎Smarty的缓存使用总结
Apr 24 #PHP
php smarty模板引擎的6个小技巧
Apr 24 #PHP
You might like
也谈 PHP 和 MYSQL
2006/10/09 PHP
PHP使用DES进行加密与解密的方法详解
2013/06/06 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
使用URL传输SESSION信息
2015/07/14 PHP
php mysqli查询语句返回值类型实例分析
2016/06/29 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
微信小程序 UI与容器组件总结
2017/02/21 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
Python import自定义模块方法
2015/02/12 Python
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
python实现解数独程序代码
2017/04/12 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
python如何写出表白程序
2020/06/01 Python
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
劲霸男装广告词
2014/03/21 职场文书
环保标语大全
2014/06/12 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
教师节倡议书
2014/08/30 职场文书
2014年实习期工作总结
2014/11/27 职场文书
同学聚会通知短信
2015/04/20 职场文书
上班迟到检讨书
2015/05/06 职场文书
学籍证明模板
2015/06/18 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python
解决Oracle数据库用户密码过期
2022/05/11 Oracle