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程序中防止盗链
Apr 09 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
Dec 05 PHP
深入分析php之面向对象
May 15 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
Jun 18 PHP
完美解决PHP中的Cannot modify header information 问题
Aug 12 PHP
Symfony生成二维码的方法
Feb 04 PHP
PHP获取不了React Native Fecth参数的解决办法
Aug 26 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
详解cookie验证的php应用的一种SSO解决办法
Oct 20 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 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计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
验证坐标在某坐标区域内php代码
2016/10/08 PHP
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
JavaScript中Boolean对象的属性解析
2015/10/21 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
JS实现简单表格排序操作示例
2017/10/07 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题
2019/10/27 Javascript
JavaScript实现简易聊天对话框(加滚动条)
2020/02/10 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
Python yield 使用浅析
2015/05/28 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
Python实现XML文件解析的示例代码
2018/02/05 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
python3发送邮件需要经过代理服务器的示例代码
2019/07/25 Python
python全局变量引用与修改过程解析
2020/01/07 Python
Django-migrate报错问题解决方案
2020/04/21 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
C++面试题目
2013/06/25 面试题
中学门卫岗位职责
2013/12/26 职场文书
社区学雷锋活动策划方案
2014/01/30 职场文书
保险经纪人求职信
2014/03/11 职场文书
消防安全责任书范本
2014/04/15 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python
java executor包参数处理功能 
2022/02/15 Java/Android
Redis基本数据类型List常用操作命令
2022/06/01 Redis