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 相关文章推荐
asp和php下textarea提交大量数据发生丢失的解决方法
Jan 20 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
PHP中使用GD库创建圆形饼图的例子
Nov 19 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
Dec 15 PHP
php异常处理方法实例汇总
Jun 24 PHP
php+ajax实现无刷新的新闻留言系统
Dec 21 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
Jun 02 PHP
thinkPHP5实现数据库添加内容的方法
Oct 25 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
Nov 24 PHP
PHP数组Key强制类型转换实现原理解析
Sep 01 PHP
php字符串倒叙
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执行速度全攻略(下)
2006/10/09 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
[16:19]教你分分钟做大人——风暴之灵
2015/03/11 DOTA
Python深入学习之闭包
2014/08/31 Python
python实现提取百度搜索结果的方法
2015/05/19 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
2020/02/29 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
int和Integer有什么区别
2013/05/25 面试题
财经学院自荐信范文
2014/02/02 职场文书
集体备课反思
2014/02/12 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
文明医院的标语集锦!
2019/07/24 职场文书
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python