php实现的微信分享到朋友圈并记录分享次数功能

yipeiwu_com5年前PHP代码库

本文实例讲述了php实现的微信分享到朋友圈并记录分享次数功能。分享给大家供大家参考,具体如下:

1.引入JS文件
2.通过config接口注入权限验证配置
3.通过ready接口处理成功验证
4.通过error接口处理失败验证

JSDK档说明:https://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

(1)

<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

(2)页面加入获取webconfig验证信息的值

<?php
$url=dirname(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__)))))));
$url=$url.'/addons/lb_vote/jssdk.php';
include $url;
$jsdk=new JSSDK('wxa3816b432f7291ba','e469db86bec9661650362dc2f9df8956');
 $signPackage = $jsdk->GetSignPackage();
?>

(3)验证config

wx.config({
debug: false,
appId:'<?php echo $signPackage["appId"];?>', // 必填,公众号的唯一标识
timestamp:<?php echo $signPackage["timestamp"];?>, // 必填,生成签名的时间戳
nonceStr: '<?php echo $signPackage["nonceStr"];?>', // 必填,生成签名的随机串
signature:'<?php echo $signPackage["signature"];?>',// 必填,签名,见附录1
jsApiList: ['checkJsApi','onMenuShareTimeline'] //
});

(4)微信分享到朋友圈接口

wx.ready(function(){
   wx.onMenuShareTimeline({
  title: '测试分享朋友圈功能', // 分享标题
  link: "{php echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];}", // 分享链接
  imgUrl: '{php echo $_W['siteroot'];}{$photo}', // 分享图标
  success: function () {
    // 用户确认分享后执行的回调函数 记录分享的次数
   $.ajax({
      url:"{php echo $this->createMobileUrl('Index',array('op'=>'share'))}",
      type:'post',
      data:"id="+{$userinfo['id']}+"&rid="+{$userinfo['rid']},
      dataType:'json',
      success:function(data){
       if(data.flags==1){
        alert(data.msg);
       }else if(data.flags==2){
        alert(data.msg);
        location.href="{php echo $this->createMobileUrl('Index',array('op'=>'display','id'=>$id))}" rel="external nofollow" ;
       }
      }
     });
  },
  cancel: function () {
    // 用户取消分享后执行的回调函数
    alert('取消分享成功!');
  }
   });
});

(5)验证错误时执行的函数

wx.error(function(res){
   alert(res);
});

(6)PHP端更新数据库,记录分享次数 返回处理信息给用户

if($op=='share'){
  $voteinfo=pdo_fetch("SELECT *FROM ".tablename('lb_vote_info')." WHERE rid = :rid and id=:id and uniacid=:uniacid and pass=:pass", array(':rid' => $_GPC['rid'],':uniacid'=>$_W['uniacid'],':pass'=>1,'id'=>$_GPC['id']));
 $sharenum=intval($voteinfo['sharenum'])+1;
 $data=array(
 'sharenum'=>$sharenum,
 );
$res=pdo_update('lb_vote_info', $data, array('id' =>$_GPC['id'],'uniacid'=>$_W['uniacid'],'rid'=>$_GPC['rid']));
if(!empty($res)){
   $msg['msg']='已分享到朋友圈!';
   $msg['flags']=2;
   echo json_encode($msg);
}else{
  $msg['msg']='分享失败!';
  $msg['flags']=1;
   echo json_encode($msg);
}
}

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP微信开发技巧汇总》、《PHP编码与转码操作技巧汇总》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《PHP中json格式数据操作技巧汇总》及《PHP针对XML文件操作技巧总结

希望本文所述对大家PHP程序设计有所帮助。

相关文章

php表单提交问题的解决方法

在此记录一下,以后不能在同一个地方摔倒了! 数据库为bbs,表为test.三个字段,分别为id,name,sex。id为auto_increment。 连接数据库的php文件conn.p...

PHP中file_exists函数不支持中文名的解决方法

一般来说PHP中常使用file_exists()判断某个文件或者文件夹是否存在,如果存在则返回true,否则返回false。但是该函数在网页使用UTF8编码的情况下,对于中文的文件名或者...

php number_format() 函数通过千位分组来格式化数字的实现代码

定义和用法number_format() 函数通过千位分组来格式化数字。 语法number_format(number,decimals,decimalpoint,separator)...

示例详解Laravel的注册重构

1. 首先确定用户注册的路由 我们在安装好laravel的时候默认生成的注册是用邮箱进行注册的,并且有些选项不需要,有些还需要加一些表单选项 我们注册的话,并不是可以随便注册的,只有一...

PHP异常处理Exception类

异常(Exception)用于在指定的错误发生时改变脚本的正常流程。 什么是异常? PHP 5 提供了一种新的面向对象的错误处理方法。 异常处理用于在指定的错误(异常)情况发生时改变脚本...