使用PHP和JavaScript判断请求是否来自微信内浏览器


Posted in PHP onAugust 18, 2015

 微信浏览器的HTTP_USER_AGENT

在iPhone下,返回

Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2)

在Android下,返回

Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255)

不难发现微信浏览器为 MicroMessenger ,并且有版本号,也可以判断手机类型为iPhone还是Android

如果要做盗链

if(strpos($_SERVER["HTTP_USER_AGENT"],"MicroMessenger"))
  echo "Welcome to wechat word";
else
  echo "http/1.1 401 Unauthorized";

public function is_weixin(){ 
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {
 return true;
}
 return false;
}    
if($this->is_weixin()){
 }else{
 echo "请使用微信访问本网址。";
} 




js判断
function is_weixin(){
  var ua = navigator.userAgent.toLowerCase();
  if(ua.match(/MicroMessenger/i)=="micromessenger") {
    return true;
   } else {
    return false;
  }
}

当在手机端判断到微信浏览器之后,可以使用微信的分享js脚本对其进行处理,大家可以参考微信的官方文档,这里提供一个案例,了解下大概流程和思路
 

<script type="text/javascript" src="/jslib/wx_share.js"></script>
    <script>
      //分享链接时给其重写分享的标题、缩略图、链接、简介等
      var imgUrl = '<?php echo base_url('/images/per.png'); ?>';
      var lineLink = 'http://www.baidu.com/';
      var shareTitle = '我来给你送钱了';
      var descContent = '折射率,你知道是啥?';
      var timeline_title = 'timeline_title';
      var appid = '';
    </script>
    <script>
      function onBridgeReady() {
        WeixinJSBridge.call('showOptionMenu');
      }
    </script>
    <script>
      if (typeof WeixinJSBridge == "undefined") {
        if (document.addEventListener) {
          document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
        } else if (document.attachEvent) {
          document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
          document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
        }
      } else {
        onBridgeReady();
      }
    </script>
</head>

        

PHP 相关文章推荐
PHP+javascript液晶时钟
Oct 09 PHP
PHP中调用ASP.NET的WebService的代码
Apr 22 PHP
PHP生成sitemap.xml地图函数
Nov 13 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 PHP
php获取中文拼音首字母类和函数分享
Apr 24 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
Jun 26 PHP
php设计模式之委托模式
Feb 13 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
Mar 07 PHP
php插入含有特殊符号数据的处理方法
Nov 24 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 26 PHP
php+laravel 扫码二维码签到功能
May 15 PHP
PHP的命令行命令使用指南
Aug 18 #PHP
使用PHP生成图片的缩略图的方法
Aug 18 #PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
Aug 18 #PHP
详解PHP中的mb_detect_encoding函数使用方法
Aug 18 #PHP
深入讲解PHP Session及如何保持其不过期的方法
Aug 18 #PHP
php微信公众平台开发之获取用户基本信息
Aug 17 #PHP
PHP添加图片水印、压缩、剪切的封装类
Aug 17 #PHP
You might like
删除数组元素实用的PHP数组函数
2008/08/18 PHP
php设计模式 Mediator (中介者模式)
2011/06/26 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
php实现encode64编码类实例
2015/03/24 PHP
jquery 上下滚动广告
2009/06/17 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
[01:09:01]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第一场 10.28
2020/10/28 DOTA
深入讲解Java编程中类的生命周期
2016/02/05 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
替换python字典中的key值方法
2018/07/06 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
matplotlib subplot绘制多个子图的方法示例
2020/07/28 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
使用css3 属性如何丰富图片样式(圆角 阴影 渐变)
2012/11/22 HTML / CSS
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
C/C++程序员常见面试题一
2012/12/08 面试题
土木工程专业大学毕业生求职信
2013/10/13 职场文书
《哪吒闹海》教学反思
2014/02/28 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
法院个人总结
2015/03/03 职场文书
MYSQL优化之数据表碎片整理详解
2022/04/03 MySQL
JavaWeb Servlet开发注册页面实例
2022/04/11 Java/Android
Python作用域和名称空间的详细介绍
2022/04/13 Python