php判断页面是否是微信打开的示例(微信打开网页)

2015-01-24信息快讯网

今天遇到一问题,让一个页面在微信上打开,PC上不能直接打开,下面是我使用的方法,现在分享给大家

$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和.net的区别
PHP常用技术文之文件操作和目录操作总结
PHP常用编译参数中文说明
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
php实现获取及设置用户访问页面语言类
php实现的Timer页面运行时间监测类
PHP+iFrame实现页面无需刷新的异步文件上传
php通过隐藏表单控件获取到前两个页面的url
php+MySQL判断update语句是否执行成功的方法
php中用memcached实现页面防刷新功能
CMS中PHP判断系统是否已经安装的方法示例
PHP判断文章里是否有图片的简单方法
php判断GIF图片是否为动画的方法
微信公众平台天气预报功能开发
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
微信营销平台系统C刮刮乐的开发
微信支付开发教程(一)微信支付URL配置
浅析PHP微信支付通知的处理方式
PHP开发微信支付的代码分享
php利用curl抓取新浪微博内容示例
php检测文件编码的方法示例
php中mysql连接和基本操作代码(快速测试使用,简单方便)
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
php除数取整示例
在PHP模板引擎smarty生成随机数的方法和math函数详解
php生成静态页面的简单示例
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
PHP对接微信公众平台消息接口开发流程教程
php 使用GD库为页面增加水印示例代码
PHP实现微信公众平台音乐点播
PHP判断指定时间段的2个方法
PHP_Cooikes不同页面无法传递的解决方法
php判断是否为json格式的方法
PHP根据IP判断地区名信息的示例代码
设置php页面编码的两种方法示例介绍
PHP 字符串长度判断效率更高的方法
php阻止页面后退的方法分享
PHP限制页面只能在微信自带浏览器访问的代码
eaglephp使用微信api接口开发微信框架
微信扫描二维码登录网站代码示例
©2014-2024 dbsqp.com