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超级全局变量
Jan 26 PHP
数组与类使用PHP的可变变量名需要的注意的问题
Jun 20 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
PHP动态生成javascript文件的2个例子
Apr 11 PHP
ThinkPHP模板判断输出Present标签用法详解
Jun 30 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
PHP连接SQLServer2005的方法
Jan 27 PHP
PHP连接access数据库
Mar 27 PHP
php分割合并两个字符串的函数实例
Jun 19 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
Oct 20 PHP
php array_reverse 以相反的顺序返回数组实例代码
Apr 11 PHP
实例讲解PHP表单处理
Feb 15 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+javascript液晶时钟
2006/10/09 PHP
PHP一些有意思的小区别
2006/12/06 PHP
关于PHP5 Session生命周期介绍
2010/03/02 PHP
JavaScript包装对象使用介绍
2013/08/29 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
angularjs基础教程
2014/12/25 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
Vue.js组件间的循环引用方法示例
2017/12/27 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
python学生管理系统代码实现
2020/04/05 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
Python列表与元组的异同详解
2019/07/02 Python
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2013/05/03 面试题
物理研修随笔感言
2014/02/14 职场文书
感恩老师演讲稿600字
2014/08/28 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫