微信公共號(hào)網(wǎng)頁開發(fā)基礎(chǔ)知識(shí)2

現(xiàn)在我們正式的進(jìn)行微信端開發(fā),我們微信公共號(hào)測(cè)試號(hào)都有了豆巨,但是我們要再手機(jī)上打開剩辟,或者在微信開發(fā)者工具上打開,所有我們要把代碼放在線上才能使用

  • 首先我們要有一個(gè)服務(wù)器往扔,我用的是新浪云服務(wù)器贩猎,下面簡(jiǎn)單的介紹一下使用方法與步驟
    1、注冊(cè)登陸新浪云
    2萍膛、在用戶中心找到控制臺(tái)中的云應(yīng)用SAE點(diǎn)擊進(jìn)去

    3吭服、創(chuàng)建新應(yīng)用
    ECBF58B2-4F79-4E73-8DAF-36A3214777B3.png

    4、點(diǎn)擊域名進(jìn)去找到應(yīng)用中的代碼管理 蝗罗,編輯代碼
    5艇棕、現(xiàn)在就可以編輯代碼了
    前面的基礎(chǔ)步驟已完成,現(xiàn)在我們要做的就是重中之重了代碼的編輯
  • 微信網(wǎng)頁授權(quán)
    1串塑、第一步:用戶同意授權(quán)沼琉,獲取code
    2、第二步:通過code換取網(wǎng)頁授權(quán)access_token
    3桩匪、第三步:刷新access_token(如果需要)
    在確保微信公眾賬號(hào)擁有授權(quán)作用域(scope參數(shù))的權(quán)限的前提下(服務(wù)號(hào)獲得高級(jí)接口后打瘪,默認(rèn)擁有scope參數(shù)中的snsapi_base和snsapi_userinfo),尤其注意:由于授權(quán)操作安全等級(jí)較高,所以在發(fā)起授權(quán)請(qǐng)求時(shí)傻昙,微信會(huì)對(duì)授權(quán)鏈接做正則強(qiáng)匹配校驗(yàn)闺骚,如果鏈接的參數(shù)順序不對(duì),授權(quán)頁面將無法正常訪問
    首先我們需要一個(gè)公共的PHP來進(jìn)行函數(shù)處理

    <?php
    //連接數(shù)據(jù)的函數(shù)妆档;
    function connect($arr){
    $link = mysqli_connect($arr['DB_HOST'], $arr['DB_USER'],       $arr['DB_PWD'], $arr['DB_NAME'],$arr['DB_PORT']);
    if(mysqli_errno($link)){
      //echo mysqli_error($link);
     }else{
      return $link;
    }
    }
    //操作數(shù)據(jù)庫的添加函數(shù)僻爽;
    function add($arr,$link=null,$table=null){
      $keys = "";
      $value = "";
        foreach($arr as $k=>$v){
          $keys.=$k.",";
          if(is_string($v)){
              $v = "'".$v."'";
          }
          $value.=$v.",";
        }
      $keys = substr($keys, 0,strlen($keys)-1);
        $value = substr($value, 0,strlen($value)-1);
    //    echo $keys."<hr>".$value;
        $sql = "INSERT INTO {$table} ({$keys}) VALUES ({$value})";
        //echo $sql;die;
        //設(shè)置編碼格式
        mysqli_query($link, "set names utf8");
        $res = mysqli_query($link, $sql);
        //添加數(shù)據(jù)的id值 ;
        $num = mysqli_insert_id($link);
        if($res && mysqli_affected_rows($link)){
            return $num;
        }else{
            return false;
        }
    }
    //操作數(shù)據(jù)庫的更新操作贾惦;
    function update($arr,$link=null,$table=null,$where=NULL){
        $where = $where==NULL?"":" WHERE ".$where;
        $str = "";
        foreach($arr as $k=>$v){
            if(is_string($v)){
                $v = "'".$v."'";
          }
      $str .= $k."=".$v.",";
        }
        $str =  substr($str, 0,strlen($str)-1);
        $sql = "UPDATE {$table} SET {$str}".$where;
        mysqli_query($link, "set names utf8");
        $res = mysqli_query($link, $sql);
        if($res && mysqli_affected_rows($link)){
            return true;
        }else{
            return false;
        }
    }
    //刪除數(shù)據(jù)胸梆;
    function delete($table,$link=null,$where=null){
        $where = $where==null?"":" WHERE ".$where;
        $sql = "DELETE FROM {$table}".$where;
        $res = mysqli_query($link, $sql);
        if($res && mysqli_affected_rows($link)){
            return true;
        }else{
            return false;
        }
    }
    //獲取多條數(shù)據(jù)
    function getlist($table,$link=null,$where=null){
        $where = $where==null?"":" WHERE ".$where;
        $sql = "SELECT * FROM {$table}".$where;
        //設(shè)置編碼格式
        mysqli_query($link, "set names utf8");
        $res = mysqli_query($link, $sql);
        while($data = mysqli_fetch_assoc($res)){
            $arr[] = $data;
        }
        if($res && mysqli_num_rows($res)){
            return $arr;
        }else{
            return false;
        }
    }
    //獲取一條數(shù)據(jù)敦捧;
    function getone($table,$link=null,$where=null){
        //var_dump($link);
        $where = $where==null?"":" WHERE ".$where;
        $sql = "SELECT * FROM {$table}".$where;
        //設(shè)置編碼格式
        mysqli_query($link, "set names utf8");
        $res = mysqli_query($link, $sql);
        if($res && mysqli_num_rows($res)){
            $data = mysqli_fetch_assoc($res);
            return $data;
        }else{
            return false;
        }
    }
    //get請(qǐng)求方式
    //1.初始化curl
    //2.設(shè)置curl
    //3.執(zhí)行curl
    //4.關(guān)閉curl
    function httpGet($url) {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_TIMEOUT, 500);
        // 為保證第三方服務(wù)器與微信服務(wù)器之間數(shù)據(jù)傳輸?shù)陌踩裕形⑿沤涌诓捎胔ttps方式調(diào)用乳绕,必須使用下面2行代碼打開ssl安全校驗(yàn)绞惦。
        // 如果在部署過程中代碼在此處驗(yàn)證失敗,請(qǐng)到       http://curl.haxx.se/ca/cacert.pem 下載新的證書判別文件洋措。
       // curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
       // curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
        curl_setopt($curl, CURLOPT_URL, $url);
        $res = curl_exec($curl);
        curl_close($curl);
        return $res;
      }
    //php里面請(qǐng)求post接口的函數(shù)
    function httpPost($data,$url){
             $ch = curl_init();
             curl_setopt($ch, CURLOPT_URL, $url);
             curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
             curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
             curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
             curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
             curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
             curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
             $tmpInfo = curl_exec($ch);
             if (curl_errno($ch)) {
              return curl_error($ch);
            }
            curl_close($ch);
            return $tmpInfo;
        }
    ?>
    

上面是封裝的系統(tǒng)济蝉,現(xiàn)在對(duì)數(shù)據(jù)進(jìn)行操作

  include "common.php";
  //用戶獲取code
  $code = $_GET['code'];
  //通過code獲取access_token;
  $url = "https://api.weixin.qq.com/sns/oauth2    /access_token?appid=wxdb15cc03e3b842f0&      secret=d2e266f71b96ee4bc92e0ed65bb8655e&code=$code&      grant_type=authorization_code";
  $res = httpGet($url);
  $data = json_decode($res, true);
  $token = $data['access_token'];
  $openid = $data['openid'];

下圖為scope等于snsapi_userinfo時(shí)的授權(quán)頁面:

0.jpg

4、第四步:拉取用戶信息(需scope為 snsapi_userinfo)
如果網(wǎng)頁授權(quán)作用域?yàn)閟nsapi_userinfo菠发,則此時(shí)開發(fā)者可以通過access_token和openid拉取用戶信息了王滤。
http:GET(請(qǐng)使用https協(xié)議) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
access_token 網(wǎng)頁授權(quán)接口調(diào)用憑證,注意:此access_token與基礎(chǔ)支持的access_token不同
openid 用戶的唯一標(biāo)識(shí)
lang 返回國家地區(qū)語言版本,zh_CN 簡(jiǎn)體滓鸠,zh_TW 繁體雁乡,en 英語
下面是通過代碼執(zhí)行可以得到以上參數(shù)

  $url2 = "https://api.weixin.qq.com/sns/userinfo?access_token=$token&openid=$openid&lang=zh_CN";
  $res2 = httpGet($url2);
  $userinfo = json_decode($res2, true);
  $nickname = $userinfo['nickname'];
  $headurl = $userinfo['headimgurl'];
  $openid = $userinfo['openid'];
  //隨機(jī)數(shù)
  $score = mt_rand(1, 100);

下面進(jìn)行對(duì)數(shù)據(jù)庫進(jìn)行設(shè)置
首先找到數(shù)據(jù)與緩存服務(wù),如果不想花太多錢的話就選擇共享型MySQL進(jìn)行數(shù)據(jù)庫操作
//連接數(shù)據(jù)庫
//用戶名  : SAE_MYSQL_USER
//密  碼 : SAE_MYSQL_PASS
//主庫域名 : SAE_MYSQL_HOST_M
//從庫域名 : SAE_MYSQL_HOST_S
//端  口 : SAE_MYSQL_PORT
//數(shù)據(jù)庫名 : SAE_MYSQL_DB

  $arr['DB_HOST'] = SAE_MYSQL_HOST_M;
  $arr['DB_USER'] = SAE_MYSQL_USER;
  $arr['DB_PWD'] = SAE_MYSQL_PASS;
  $arr['DB_NAME'] = SAE_MYSQL_DB;
  $arr['DB_PORT'] = SAE_MYSQL_PORT;
  $link = connect($arr);
  //var_dump($link);
  $addArr['nickname'] = $nickname;
  $addArr['headurl'] = $headurl;
  $addArr['openid'] = $openid;
  $addArr['score'] = $score;
  //判斷數(shù)據(jù)庫里面有沒有相關(guān)數(shù)據(jù)
  $result = getone("users", $link, "openid='{$openid}'");
  if ($result) {
      //已經(jīng)存了 更新分?jǐn)?shù)
      $uparr["score"] = $score;
      $re = update($uparr, $link, "users", "openid='{$openid}'");
      if ($re) {
          echo "更新成功";
      } else {
          echo "更新失敗";
      }
  } else {
      //沒有存
      $res = add($addArr, $link, "users");
      if ($res) {
          echo "添加成功";
      } else {
          echo "添加失敗";
      }
  }

運(yùn)行結(jié)果如下


B9413A75-6958-4DC9-8C61-DD567E12AC68.png

數(shù)據(jù)庫資源如下
99180E0D-BDED-4D86-9814-49ED3201D948.png

現(xiàn)在把數(shù)據(jù)展現(xiàn)在頁面上

  <!DOCTYPE html>
  <html>
      <head>
          <title></title>
      </head>
      <body>
          <table border="" >
              <tr>
                  <th>昵稱</th>
                  <th>頭像</th>
                  <th>分?jǐn)?shù)</th>
              </tr>
              <?php foreach($list as $key =>$val){?>            
              <tr>
                  <td><?php echo $val['nickname'] ?></td>
                  <td><img src="<?php echo $val['headurl'] ?>"/></td>
                  <td><?php echo $val['score'] ?></td>
              </tr>
              <?php } ?>
          </table>
      </body>
  </html>

運(yùn)行結(jié)果如下


C9E778F1-7D0C-4A40-B106-0903AD90C7FF.png

以上只是簡(jiǎn)單地操作糜俗,后面要繼續(xù)進(jìn)行深究

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末踱稍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子悠抹,更是在濱河造成了極大的恐慌珠月,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件楔敌,死亡現(xiàn)場(chǎng)離奇詭異啤挎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)卵凑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門庆聘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人勺卢,你說我怎么就攤上這事伙判。” “怎么了黑忱?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵宴抚,是天一觀的道長。 經(jīng)常有香客問我杨何,道長酱塔,這世上最難降的妖魔是什么沥邻? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任危虱,我火速辦了婚禮,結(jié)果婚禮上唐全,老公的妹妹穿的比我還像新娘埃跷。我一直安慰自己蕊玷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布弥雹。 她就那樣靜靜地躺著垃帅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剪勿。 梳的紋絲不亂的頭發(fā)上贸诚,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音厕吉,去河邊找鬼酱固。 笑死,一個(gè)胖子當(dāng)著我的面吹牛头朱,可吹牛的內(nèi)容都是我干的运悲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼项钮,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼班眯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起烁巫,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤署隘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后程拭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體定踱,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年恃鞋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了崖媚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恤浪,死狀恐怖畅哑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情水由,我是刑警寧澤荠呐,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站砂客,受9級(jí)特大地震影響泥张,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鞠值,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一媚创、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧彤恶,春花似錦钞钙、人聲如沸鳄橘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瘫怜。三九已至,卻和暖如春本刽,著一層夾襖步出監(jiān)牢的瞬間鲸湃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來泰國打工子寓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唤锉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓别瞭,卻偏偏與公主長得像窿祥,于是被迫代替她去往敵國和親谷誓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子犁苏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • cURL是一個(gè)利用URL語法規(guī)定來傳輸文件和數(shù)據(jù)的工具堕虹,支持很多協(xié)議和選項(xiàng)荣德,如HTTP佛舱、FTP乌企、TELNET等恳谎,能...
    司馬東陽閱讀 1,438評(píng)論 0 6
  • 原文地址:PHPcURL庫函數(shù)抓取頁面內(nèi)容(轉(zhuǎn))作者:巴克 cURL是一個(gè)利用URL語法規(guī)定來傳輸文件和數(shù)據(jù)的工具...
    司馬東陽閱讀 1,177評(píng)論 0 3
  • 手寫的時(shí)空:第3章 07 斷裂情感逐一離去航棱。 五年的萸虹菲,數(shù)月的拭歆靠胜,時(shí)間不等,可都帶來傷痛毕源,還有那些破壞我純粹美好...
    茆茆2B閱讀 321評(píng)論 1 5
  • 注意水果溫度 不空腹吃酸澀味的水果 不要吃飽后立即吃水果 根據(jù)自身體質(zhì)選擇水果吃 均衡吃水果
    努力奮斗的一種閱讀 166評(píng)論 0 0
  • 佛說浪漠,前生的五百次回眸,才換來今生的一次擦肩而過霎褐。 或早或晚址愿,在人海茫茫中遇到一個(gè)心意相通的人。從此看星星看月亮看...
    安夏茉閱讀 1,456評(píng)論 56 49