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+DBM的同学录程序(1)
Oct 09 PHP
php ss7.5的数据调用 (笔记)
Mar 08 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
Jun 07 PHP
一个图片地址分解程序(用于PHP小偷程序)
Aug 23 PHP
php+mysql实现用户注册登陆的方法
Jan 03 PHP
四个PHP非常实用的功能
Sep 29 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
Jul 09 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
Sep 30 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
Feb 28 PHP
PHP框架自动加载类文件原理详解
Jun 06 PHP
PHP如何通过表单直接提交大文件详解
Jan 08 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
图书管理程序(一)
2006/10/09 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
合并table相同单元格的jquery插件分享(很精简)
2011/06/20 Javascript
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
js获取select标签选中值的两种方式
2014/01/09 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
jQuery解决input超多的表单提交
2015/08/10 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
详解Vue 2.0封装axios笔记
2017/06/22 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
Vee-Validate的使用方法详解
2017/09/22 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
Python 除法小技巧
2008/09/06 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
使用Python实现批量ping操作方法
2020/05/06 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
2020/05/13 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
《回乡偶书》教学反思
2014/04/12 职场文书
主要领导对照检查材料
2014/08/26 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书
话题作文之自信作文
2019/11/15 职场文书
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript