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新手上路(八)
Oct 09 PHP
PHP图片上传类带图片显示
Nov 25 PHP
PHP加速 eAccelerator配置和使用指南
Jun 05 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
Jan 31 PHP
PHP计算指定日期所在周的开始和结束日期的方法
Mar 24 PHP
PHP实现微信发红包程序
Aug 24 PHP
php图片水印添加、压缩、剪切的封装类实现
Apr 18 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
Mar 22 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 PHP
PHP两个n位的二进制整数相加问题的解决
Aug 26 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制作静态网站的模板框架(四)
2006/10/09 PHP
php数组的一些常见操作汇总
2011/07/17 PHP
php通过strpos查找字符串出现位置的方法
2015/03/17 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
2016/09/16 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
[02:01]大师之路——DOTA2完美大师赛11月论剑上海
2017/11/06 DOTA
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
python打开windows应用程序的实例
2019/06/28 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
pytorch1.0中torch.nn.Conv2d用法详解
2020/01/10 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
2021/01/30 Python
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
机械设计专业应届生求职信
2013/11/21 职场文书
人事主管岗位职责范本
2013/12/04 职场文书
校园活动策划方案
2014/06/13 职场文书
群教个人对照检查材料
2014/08/20 职场文书
PHP实现两种排课方式
2021/06/26 PHP