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 相关文章推荐
PHP生成静态页
Nov 25 PHP
php面向对象全攻略 (九)访问类型
Sep 30 PHP
php 变量未定义等错误的解决方法
Jan 12 PHP
PHP禁止页面缓存的代码
Oct 23 PHP
PHPThumb图片处理实例
May 03 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
Oct 16 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
Jul 01 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
Jan 04 PHP
thinkphp3.x中变量的获取和过滤方法详解
May 20 PHP
全面解析PHP面向对象的三大特征
Jun 10 PHP
php实现的mongoDB单例模式操作类
Jan 20 PHP
PHP中SESSION过期设置
Mar 09 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调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
php一个解析字符串排列数组的方法
2015/05/12 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
Google Suggest ;-) 基于js的动态下拉菜单
2006/10/11 Javascript
Javascript实现的分页函数
2007/02/07 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
JavaScript forEach()遍历函数使用及介绍
2015/07/08 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
weex里Vuex state使用storage持久化详解
2017/09/09 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
python生成IP段的方法
2015/07/07 Python
Python中类型检查的详细介绍
2017/02/13 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
pygame实现简易飞机大战
2018/09/11 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
Python动态语言与鸭子类型详解
2019/07/01 Python
HTML5 canvas实现雪花飘落特效
2016/03/08 HTML / CSS
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
Java中PriorityQueue实现最小堆和最大堆的用法
2021/06/27 Java/Android