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脚本的10个技巧(1)
Oct 09 PHP
解决php中Cannot send session cache limiter 的问题的方法
Apr 27 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
Mar 07 PHP
php全排列递归算法代码
Oct 09 PHP
PHP 异步执行方法,模拟多线程的应用分析
Jun 03 PHP
PHP抓取、分析国内视频网站的视频信息工具类
Apr 02 PHP
PHP中的表达式简述
May 29 PHP
浅谈PHP的反射API
Feb 26 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
May 30 PHP
Thinkphp5结合layer弹窗定制操作结果页面
Jul 07 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
彻底搞懂PHP 变量结构体
Oct 11 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封装分页函数实现文本分页和数字分页
2014/10/23 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
php封装一个异常的处理类
2017/06/08 PHP
javascript正则表达式参数/g与/i及/gi的使用指南
2014/08/27 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
2015/10/13 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
js实现无限层级树形数据结构(创新算法)
2020/02/27 Javascript
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
Django 路由控制的实现
2019/07/17 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
pycharm快捷键汇总
2020/02/14 Python
Python如何实现远程方法调用
2020/08/07 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
2020/09/28 Python
详解HTML5中的标签
2015/06/19 HTML / CSS
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
有趣、实用和鼓舞人心的产品:Inspire Uplift
2019/11/05 全球购物
大学生毕业自我评价范文分享
2013/11/11 职场文书
教育实习生的自我评价分享
2013/11/21 职场文书
元旦晚会邀请函
2014/02/01 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书
小学感恩节活动总结
2015/03/24 职场文书
经典爱情感言
2015/08/03 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
2016公务员年度考核评语
2015/12/01 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang
把77A收信机改造成收音机
2022/04/05 无线电