使用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 相关文章推荐
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
Oct 31 PHP
php 数据库字段复用的基本原理与示例
Jul 22 PHP
php基础教程 php内置函数实例教程
Aug 21 PHP
解析左右值无限分类的实现算法
Jun 20 PHP
PHP中JSON的应用技巧
Oct 10 PHP
关于PHP转换超过2038年日期出错的问题解决
Jun 28 PHP
php使用pecl方式安装扩展操作示例
Aug 12 PHP
thinkphp框架使用JWTtoken的方法详解
Oct 10 PHP
在laravel5.2中实现点击用户头像更改头像的方法
Oct 14 PHP
如何在PHP中生成随机数
Jun 04 PHP
Laravel相关的一些故障解决
Aug 19 PHP
Laravel中获取IP的真实地理位置
Apr 01 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 AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
php以post形式发送xml的方法
2014/11/04 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
JavaScript 面向对象编程(2) 定义类
2010/05/18 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
JS对img进行操作(换图片/切图/轮换/停止)
2013/04/17 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
vuejs如何配置less
2017/04/25 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
原生JS实现自定义下拉单选选择框功能
2018/10/12 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
python网络编程学习笔记(三):socket网络服务器
2014/06/09 Python
python实现获取Ip归属地等信息
2016/08/27 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
python中的数组赋值与拷贝的区别详解
2019/11/26 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
2020/01/04 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
采购部部门职责
2013/12/15 职场文书
学术会议欢迎词
2014/01/09 职场文书
打架检讨书400字
2014/01/17 职场文书
小学生新学期寄语
2014/01/19 职场文书
商场营业员岗位职责
2015/04/14 职场文书
污水处理保证书
2015/05/09 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
七年级作文之环保作文
2019/10/17 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python