php微信分享朋友圈模板

<html >
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
        <title>{headTitle}</title>
        <script type="text/javascript" src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js" ></script>

    </head>
    <body>
        {bodyHtml}

<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript">
var json_str = ‘<?php echo json_encode($signPackage); ?>‘;
var signPackage = jQuery.parseJSON(json_str);
$(function() {
    var urlpath = ‘http://‘ + window.location.hostname + window.location.pathname;
    if (urlpath.slice(-10) == "index.html") {
        urlpath = urlpath.slice(0, -10);
    }
    var appUrl = urlpath;
    var imgUrl = ‘http://‘ + window.location.hostname + ‘/static/lumi/share.jpg‘;
    var dataForWeixin = {
        title: "lumi",
        desc: " lumi",
        link: appUrl,
        imgUrl: imgUrl
    };
    wx.config({
        debug: false,
        appId: signPackage.appId,
        timestamp: signPackage.timestamp,
        nonceStr: signPackage.nonceStr,
        signature: signPackage.signature,
        jsApiList: [
            ‘onMenuShareTimeline‘,
            ‘onMenuShareAppMessage‘
        ]
    });
    wx.ready(function() {
        // 2. 分享接口
        // 2.1 监听“分享给朋友”,按钮点击、自定义分享内容及分享结果接口
        wx.onMenuShareAppMessage({
            title: dataForWeixin.title,
            desc: dataForWeixin.desc,
            link: dataForWeixin.link,
            imgUrl: dataForWeixin.imgUrl,
            trigger: function(res) {
                // alert(‘用户点击发送给朋友‘);
            },
            success: function(res) {
                _hmt.push([‘_trackEvent‘, ‘chocolate_friend‘, ‘share_friend‘, ‘wechat‘, ‘friend‘]);
            },
            cancel: function(res) {
                // alert(‘已取消‘);
            },
            fail: function(res) {
                // alert(JSON.stringify(res));
            }
        });

        // 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果接口
        wx.onMenuShareTimeline({
            title: dataForWeixin.title,
            desc: dataForWeixin.desc,
            link: dataForWeixin.link,
            imgUrl: dataForWeixin.imgUrl,
            trigger: function(res) {
                // alert(‘用户点击分享到朋友圈‘);
            },
            success: function(res) {
                _hmt.push([‘_trackEvent‘, ‘chocolate_friends‘, ‘share_friends‘, ‘wechat‘, ‘friends‘]);
            },
            cancel: function(res) {
                //alert(‘已取消‘);
            },
            fail: function(res) {
                // alert(JSON.stringify(res));
            }
        });
    });

    wx.error(function(res) {
        alert(res.errMsg);
    });
});
</script>
    </body>
</html>

上面是首页,view文件

基于CI框架

下面是 控制器

<?php  if ( ! defined(‘BASEPATH‘)) exit(‘No direct script access allowed‘);

/**
 * @微信分享,发送好友圈后段代码
 * @需要创建lumi_token表存储 token和ticket
 * @文件包中已提供表结构
 */
class Lumi extends CI_Controller {
    var $appUrl=‘‘;
    var $appName = ‘lumi‘;
    var $appTitle = ‘lumi‘;
    var $appId = ‘wx0f82c5fa6e943f4c‘;
    var $appSecret = ‘411c63951104c3dab1f26e2f95fb3300‘;
    function __construct() {
            header("Content-Type: text/html; charset=UTF-8");
            parent::__construct();
            $this->appUrl = ‘http://‘.$_SERVER[‘HTTP_HOST‘].‘/lumi‘;

    }

    /**
     *
     */
    public function index(){
        $data = array(
            ‘headTitle‘=>$this->appTitle,
            ‘appUrl‘=>$this->appUrl
        );
        $signPackage = $this->GetSignPackage();
        $data[‘signPackage‘] = $signPackage;
        $data[‘bodyHtml‘] = $this->parser->parse($this->appName . ‘/index‘, $data);
    }

    /*
     * 获取微信信息
     */
      public function getSignPackage() {
        $jsapiTicket = $this->getJsApiTicket();
        $protocol = (!empty($_SERVER[‘HTTPS‘]) && $_SERVER[‘HTTPS‘] !== ‘off‘ || $_SERVER[‘SERVER_PORT‘] == 443) ? "https://" : "http://";
        $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
        $timestamp = time();
        $nonceStr = $this->createNonceStr();

        // 这里参数的顺序要按照 key 值 ASCII 码升序排序
        $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";

        $signature = sha1($string);

        $signPackage = array(
            "appId" => $this->appId,
            "nonceStr" => $nonceStr,
            "timestamp" => $timestamp,
            "url" => $url,
            "signature" => $signature,
            "rawString" => $string
        );
        return $signPackage;
    }

    private function createNonceStr($length = 16) {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $str = "";
        for ($i = 0; $i < $length; $i++) {
            $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
        }
        return $str;
    }

    //获取Ticket
    private function getJsApiTicket() {
        $data = $this->db->query("select * from lumi_token order by id DESC limit 1")->result_array();
        $data = $data[0];
        if (count($data) <= 0) {
            $accessToken = $this->getAccessToken();
            $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
            $res = json_decode($this->httpGet($url));
            $ticket = $res->ticket;
            if ($ticket) {
                $this->db->update(‘lumi_token‘, array(‘jsapi_ticket‘ => $ticket), array(‘access_token‘ => $accessToken));
            }
        } else {
            if (time() - intval($data[‘lasttime‘]) > 6000) {
                $accessToken = $this->getAccessToken();
                $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
                $res = json_decode($this->httpGet($url));
                $ticket = $res->ticket;
                if ($ticket) {
                    $this->db->update(‘lumi_token‘, array(‘jsapi_ticket‘ => $ticket), array(‘access_token‘ => $accessToken));
                }
            } else {
                $ticket = $data[‘jsapi_ticket‘];
            }
        }
        return $ticket;
    }

    //获取token
    private function getAccessToken() {
        $tokendata = $this->db->query("select * from lumi_token order by id DESC limit 1")->result_array();
        $tokendata = $tokendata[0];
        if (count($tokendata) <= 0) {
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
            $res = json_decode($this->httpGet($url));
            $access_token = $res->access_token;
            if ($access_token) {
                $this->db->insert(‘lumi_token‘, array(‘access_token‘ => $access_token, ‘lasttime‘ => time()));
            }
        } else {
            if (time() - intval($tokendata[‘lasttime‘]) > 6000) {
                $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
                $res = json_decode($this->httpGet($url));
                $access_token = $res->access_token;
                if ($access_token) {
                    $this->db->update(‘lumi_token‘, array(‘access_token‘ => $access_token, ‘lasttime‘ => time()));
                }
            } else {
                $access_token = $tokendata[‘access_token‘];
            }
        }
        return $access_token;
    }

    private function httpGet($url) {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_TIMEOUT, 500);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_URL, $url);

        $res = curl_exec($curl);
        curl_close($curl);

        return $res;
    }
}
?>

还要配合一个数据表  表明为  lumi_token

百度云盘:1gdenMLH

时间: 2024-10-28 23:16:09

php微信分享朋友圈模板的相关文章

微信分享朋友圈的标题和图片

定义分享时的缩略图.链接.标题.摘要确实是通过WeixinJSBridge实现的. 参考腾讯微生活的页面:(略去了跟此需求无关的代码,仅供参考) <script> var imgUrl = 'http://qqfood.tc.qq.com/meishio/16/4585bf7c-be04-420f-ac8a-2dba61a7561f/0'; var lineLink = 'http://life.qq.com/weixin/r/lottery/13826036970196242008#wech

iOS 微信分享 朋友圈(2016.3.17) - 王彬分享,越分享,越快乐

一,先配置 1.首先去微信开放平台注册账号(是微信开放平台 不是腾讯开放平台,两者不一样) https://open.weixin.qq.com 注册完成之后记得创建应用,后边会用到.只需要注册就行, 拿到AppID 就行,不用上传app 2.下来我们在 微信开放平台的资源中心中下载sdk 下载完成后 里面有我们需要的工具包 3.接下来我们讲刚才下载的三个工具包拖入我们的项目 拖入后的效果如下: 4.导入我们需要的framwork: 5.接下里 一定记得在 Build Settings->Sea

微信分享朋友圈的链接被屏蔽(已停止访问该网页)怎么办?

朋友圈链接已停止访问的原因 很多时候微信屏蔽分享链接并不是起因于网页的内容违规了,而是被同行或其他用户恶意投诉举报导致的,致使分享到微信朋友圈的链接无法打开并提示“已停止访问该网页”. 那么当大家遇到这个问题的时候应该怎么办呢?不用急,下面给大家分享一种技术方案. 技术方案 当我们知道了网页被封的原因,然后再去针对性的解决就没那么难了. 被同行或者用户恶意投诉导致网页被微信拦截的情况下,我们可以直接用技术手段让别人无法举报你的网页.给大家推荐一种技术叫“屏蔽网页投诉功能”,用户打开网页是看不见投

微信 分享朋友圈 发送好友 js代码

function loadBless(){ document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { var redirectsingleurl = encodeMyStr("http://10.3.172.189:8080/OlaPushHtml/publish/wx/bless/homepage?from=singlemessage&isappinstalled=0"); var

php实现微信分享朋友圈

class JSSDK { private $appId; private $appSecret; public function __construct($appId, $appSecret) { $this->appId = $appId; $this->appSecret = $appSecret; } public function getSignPackage() { $jsapiTicket = $this->getJsApiTicket(); $url = "ht

分享到微信分享朋友圈链接被屏蔽(停止访问)怎么办?

微信这款软件是禁止营销的,但是大家都知道微信的最大价值就是所带来的社交圈营销,官方一直在打击这些营销行为 只要发现网站内容有问题,马上就封你,你的微信营销就已经已经已经失败了, 我今天谈的就是微信怎么做这些防封防屏蔽的的措施! 基本概念: 微信中营销活动百分百防封是做不到的的,这点要知道,网络上有着<不死域名>的概念, 主要的技术原理是利用腾讯认证的原理.通过认证有了一层白名单.比普通域名经用一点. 腾讯也一直增加技术封锁,防屏蔽是一个长期对抗的过程. 有什么好的预防措施呢: 1.域名监测接口

微信及朋友圈分享

微信分享代码相对来说比较简单,因为已经给我们提供了SDK Demo,代码部分就不再赘述了. 这边有一篇文章写的挺好,把整个流程以及过程中遇到的问题都描述了一遍: http://blog.csdn.net/freesonhp/article/details/10756663 另外微信官方已经提供了一些经常遇到问题的解决方案 https://open.weixin.qq.com/cgi-bin/frame?t=resource/res_main_tmpl&lang=zh_CN 微信及朋友圈分享,布布

长按微信公众号文章内容可分享朋友圈且附带二维码

就在刚刚,有朋友无意间发现长按住微信公众号文章内容的某一句话,将会出现“分享”的选项,一旦分享之后,微信将会自动将选中的内容,形成一段话分享在朋友圈,而且会在分享的文末,附上该篇文章的二维码.ytkah觉得这个非常文艺范,一小句话自动生成图片,很唯美,在朋友圈容易疯转,附带的二维码也利于公众号的宣传,整个有点像前段时间那个很火的宽图小应用 长按住微信公众号文章内容的某一句话,将会出现“分享”的选项 长按微信公众号文章可以分享朋友圈且附带二维码 目前,经过测试,仅有苹果手机可以使用这一功能.有了这

微信js分享朋友圈

1.绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. 备注:登录后可在“开发者中心”查看对应的接口权限. 2.引入js文件 <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script type="text/javascript" src=