国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

? ?? ??? ?? ?? PHP WeChat ?? ??? ?? ??? ??

PHP WeChat ?? ??? ?? ??? ??

Jan 16, 2017 pm 02:00 PM

PHP WeChat ?? ??? ?????. ??? ??? ???? ???? ?? WeChat?? ????? ????? ???? ?? ?? WeChat ?? ??? ???? ???. ?? ??? ?? WeChat? ?? ??? ??? ? ????. WeChat ??? ?? ???? ???. ???? ??? ? ?? ??? ??? ??? ?? ? ??? ??? ?? ??? ? ????.

??? ???? ?? ??? ?? js? ????.

<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
 
<script>
wx.config({
   debug: false, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會通過log打出,僅在pc端時才會打印。
   appId: &#39;{$appid}&#39;, // 必填,公眾號的唯一標識
   timestamp:{$timestamp} , // 必填,生成簽名的時間戳
   nonceStr: &#39;{$nonceStr}&#39;, // 必填,生成簽名的隨機串
   signature: &#39;{$signature}&#39;,// 必填,簽名,見附錄1
   jsApiList: [&#39;onMenuShareAppMessage&#39;,&#39;onMenuShareTimeline&#39;] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2
 });
 
 wx.ready(function(){
  //分享給朋友
  wx.onMenuShareAppMessage({
    title: {$title}, // 分享標題 此處$title可在控制器端傳遞也可在頁面?zhèn)鬟f 頁面?zhèn)鬟f講解在下面哦
    desc: {$desc}, //分享描述
    link: {$link}, // 分享鏈接
    imgUrl: {$imgurl}, // 分享圖標
    type: &#39;&#39;, // 分享類型,music、video或link,不填默認為link
    dataUrl: &#39;&#39;, // 如果type是music或video,則要提供數(shù)據(jù)鏈接,默認為空
    success: function () {
       alert(&#39;分享成功&#39;);
    },
    cancel: function () {
      // 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
      // alert(&#39;取消分享&#39;);
    }
  });
  //分享到朋友圈
   wx.onMenuShareTimeline({
    title: {$title}, // 分享標題
    desc: {$desc}, // 分享描述
    link: {$link}, // 分享鏈接
    imgUrl: {$imgurl}, // 分享圖標
    success: function () {
      // 用戶確認分享后執(zhí)行的回調(diào)函數(shù)
    },
    cancel: function () {
      // 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
    }
  });
 });
 
</script>

wx.config? ???? ????? ??? ?? ??? ?????. ??? ???? ?? false? ??? ? ????. ???? ??? ?? true? ?????. ?? ?? ok? ?? ?? ?? ??? ???? ?? ?? ?? true? ???? ?? ??? ???? ????.

wx.config?? ????? 4? ????, ? appId, timestamp, nonceStr ? ?? ?? ?? ??? ??? ????.

<?php
 
$jssdk = new \Home\Util\JSSDK(C(&#39;APPID&#39;), C(&#39;SECRET&#39;));//此處C里面的東西為你所使用的公眾號的appid和secret,這倆個東西可在微信公眾平臺獲取到 不詳細解釋 找不到追加評論(講解) JSSDK文件代碼在下
$signPackage = $jssdk->GetSignPackage();
 
$this->assign(&#39;appid&#39;,$signPackage["appId"]);
$this->assign(&#39;timestamp&#39;,$signPackage["timestamp"]);
$this->assign(&#39;nonceStr&#39;,$signPackage["nonceStr"]);
 $this->assign(&#39;signature&#39;,$signPackage["signature"]);

???? wx.config? ???? ??? ??? ?? ??? ??? ?? ????.

$this->sign('title', $title);

JSSDK ?? ??:

<?php
namespace Home\Util;
use Think\Controller;
class JSSDK{
 private $appId;
 private $appSecret;
 public function __construct($appId, $appSecret) {
  $this->appId = $appId;
  $this->appSecret = $appSecret;
 }
 public function getSignPackage() {
  $jsapiTicket = $this->getJsApiTicket();
  // 注意 URL 一定要動態(tài)獲取,不能 hardcode.
  $protocol = (!empty($_SERVER[&#39;HTTPS&#39;]) && $_SERVER[&#39;HTTPS&#39;] !== &#39;off&#39; || $_SERVER[&#39;SERVER_PORT&#39;] == 443) ? "https://" : "http://";
  $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
  $timestamp = time();
  $nonceStr = $this->createNonceStr();
  // 這里參數(shù)的順序要按照 key 值 ASCII 碼升序排序
  $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$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;
 }
 public function getJsApiTicket() {
  // jsapi_ticket 應(yīng)該全局存儲與更新,以下代碼以寫入到文件中做示例
  $data = json_decode($this->get_php_file("jsapi_ticket.php"));
  if ($data->expire_time < time()) {
   $accessToken = $this->getAccessToken();  
   // 如果是企業(yè)號用以下 URL 獲取 ticket
   // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";
   $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=$accessToken&type=jsapi";
   $res = json_decode($this->httpGet($url));
   $ticket = $res->ticket;
   // var_dump($url);
   if ($ticket) {
    $data->expire_time = time() + 7000;
    $data->jsapi_ticket = $ticket;
    $this->set_php_file("jsapi_ticket.php", json_encode($data));
   }
  } else {
   $ticket = $data->jsapi_ticket;
  }
  return $ticket;
 }
 public function getAccessToken() {
  // access_token 應(yīng)該全局存儲與更新,以下代碼以寫入到文件中做示例
  $data = json_decode($this->get_php_file("access_token.php")); 
  if ($data->expire_time < time()) {
   // 如果是企業(yè)號用以下URL獲取access_token
   // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
   $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
   $res = $this->getJson($url);
   $access_token = $res[&#39;access_token&#39;];
   // var_dump($res);
   if ($access_token) {
    $data->expire_time = time() + 7000;
    $data->access_token = $access_token;
    $this->set_php_file("access_token.php", json_encode($data));
   }
  } else {
   $access_token = $data->access_token;
  }
  return $access_token;
  // $aa = $access_token;
  // var_dump($aa);
 }
 //獲取access_token
 public function getJson($url){
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   $output = curl_exec($ch);
   curl_close($ch);
   // var_dump(json_decode($output, true));
   return json_decode($output, true);
 }
 //獲取ticket
 private function httpGet($url) {
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  // curl_setopt($curl, CURLOPT_TIMEOUT, 500);
  // 為保證第三方服務(wù)器與微信服務(wù)器之間數(shù)據(jù)傳輸?shù)陌踩?,所有微信接口采用https方式調(diào)用,必須使用下面2行代碼打開ssl安全校驗。
  // 如果在部署過程中代碼在此處驗證失敗,請到 http://curl.haxx.se/ca/cacert.pem 下載新的證書判別文件。
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  $res = curl_exec($curl);
  // var_dump($res);
  curl_close($curl);  
  return $res;
 }
 private function get_php_file($filename) {
  return trim(substr(file_get_contents($filename), 15));
  // echo trim(substr(file_get_contents($filename), 15));die;
  // $aa = trim(substr(file_get_contents($filename), 15));
 }
 private function set_php_file($filename, $content) {
  $fp = fopen($filename, "w");
  fwrite($fp, "<?php exit();?>" . $content);
  fclose($fp);
 }
}

? ???? WeChat ??? ????? ??? ????. ?, ??? ?? wx.config? ??? ? ??? $title? ?? ?? ??? ?? ????? ??? ?? ????

??? ?? ???? ??? ??? ? ????(???? ??).

<script>
var zl= function (title,link,imgurl,desc){
 wx.ready(function(){
  //分享給朋友
  wx.onMenuShareAppMessage({
    title: title, // 分享標題
    desc: desc, //分享描述
    link: link, // 分享鏈接
    imgUrl: imgurl, // 分享圖標
    type: &#39;&#39;, // 分享類型,music、video或link,不填默認為link
    dataUrl: &#39;&#39;, // 如果type是music或video,則要提供數(shù)據(jù)鏈接,默認為空
    success: function () {
       alert(&#39;分享成功&#39;);
    },
    cancel: function () {
      // 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
      // alert(&#39;取消分享&#39;);
    }
  });
  //分享到朋友圈
   wx.onMenuShareTimeline({
    title: title, // 分享標題
    desc: desc, // 分享描述
    link: link, // 分享鏈接
    imgUrl: imgurl, // 分享圖標
    success: function () {
      // 用戶確認分享后執(zhí)行的回調(diào)函數(shù)
    },
    cancel: function () {
      // 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
      // alert(&#39;已取消分享&#39;);
    }
  });
 });
};
</script>

??? ??? ?? ??? ?????? ?????? ?????. ?? ?? ?????. ???? ?? ?? ?? ???? ?? ??? ? ?????. ??? ?? ??? ??? ????.

<script>
zl(title,link,imgurl,desc);
</script>

??? ?? ?? ?? ? ?? ??? ????. ?? ???

? ??? ? ?? ?? ?????. ?? ??? ??? ??? ?? ???, PHP ??? ????? ?? ?????? ????.

PHP ?? ?? ? ??? ?? ? ??? ?? PHP ??? ????? ??????!

? ????? ??
? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

? AI ??

Undresser.AI Undress

Undresser.AI Undress

???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover

AI Clothes Remover

???? ?? ???? ??? AI ?????.

Video Face Swap

Video Face Swap

??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

???

??? ??

???++7.3.1

???++7.3.1

???? ?? ?? ?? ???

SublimeText3 ??? ??

SublimeText3 ??? ??

??? ??, ???? ?? ????.

???? 13.0.1 ???

???? 13.0.1 ???

??? PHP ?? ?? ??

???? CS6

???? CS6

??? ? ?? ??

SublimeText3 Mac ??

SublimeText3 Mac ??

? ??? ?? ?? ?????(SublimeText3)

???

??? ??

??? ????
1601
29
PHP ????
1502
276
???