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的中问验证码
Nov 25 PHP
ionCube 一款类似zend的PHP加密/解密工具
Jul 25 PHP
PHP设计模式之结构模式的深入解析
Jun 13 PHP
PHP分页效率终结版(推荐)
Jul 01 PHP
ThinkPHP实现一键清除缓存方法
Jun 26 PHP
php图片水印添加、压缩、剪切的封装类实现
Apr 18 PHP
php微信公众号开发(4)php实现自定义关键字回复
Dec 15 PHP
php事务回滚简单实现方法示例
Mar 28 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 PHP
基于laravel where的高级使用方法
Oct 10 PHP
PDO实现学生管理系统
Mar 21 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开发框架myqee新手快速入门教程
2014/07/14 PHP
php从字符串创建函数的方法
2015/03/16 PHP
PHP 芝麻信用接入的注意事项
2016/12/01 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
2019/02/18 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
Python通过poll实现异步IO的方法
2015/06/04 Python
Python中的super()方法使用简介
2015/08/14 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
python如何创建TCP服务端和客户端
2018/08/26 Python
Django保护敏感信息的方法示例
2019/05/09 Python
django框架F&amp;Q 聚合与分组操作示例
2019/12/12 Python
python高阶函数map()和reduce()实例解析
2020/03/16 Python
解决tensorflow读取本地MNITS_data失败的原因
2020/06/22 Python
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
物业管理应届生求职信
2013/10/28 职场文书
毕业生的自我鉴定该怎么写
2013/12/02 职场文书
适用于所有创业者的创业计划书
2014/02/05 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
庆元旦演讲稿
2014/09/15 职场文书
博士导师推荐信
2015/03/25 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书