如何生成二維碼並統計掃描次數,展示二維碼頁面
阿新 • • 發佈:2018-12-26
引入了 phpqrcode 外掛來生成自定義二維碼
//建立空二維碼 唯一標識code public function mkCode() { // 引入外掛 include '/static/phpqrcode/phpqrcode.php'; $str='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'; $randStr = str_shuffle($str); $data['code'] = substr($randStr,0,6); $code = base64_encode($data['code']); // $code 是二維碼的唯一標識 //二維碼的連結,等於 域名 加 控制器方法 加 唯一標識code $link = 'http://...com/erweima-moveCode?code=' . $code; $name = date('Ymd') . time() . rand(1000000, 9999999); // 生成的二維碼儲存到本地的地址 $code_link = 'static/code/' . $name . '.png'; QRcode::png($link, $code_link, '', 10, 2, true); $code_data['code'] = $data['code']; $code_data['time'] = date('Y-m-d H:i:s', time()); $code_data['code_link'] = $code_link; // $code_data 就是生成二維碼的資訊 // 此處插入資料庫,$data是插入資料庫的執行結果 if ($success) { return $data['code']; } else { return false; } }
如果使點選不同的連結就展示不同的二維碼,並計算掃描次數
//掃描二維碼進入這個方法, 原理 掃描二維碼就是進二維碼的連結地址 public function moveCode() { // 獲取二維碼的唯一標識 code $data = $this->getlink(13); $code = $data['code']; // 查詢出來的二維碼錶中這個二維碼的資料 $data = M('content')->chaxun('code', $code); foreach ($data as $v) { $data = $v; } $saveData['time'] = date('Y-m-d', time()); $saveData['code_id'] = $data['id']; $saveData['uid'] = $data['uid']; // 掃描訪問次數的統計 $fangwen = M('fangwen')->fangwen('code_id', $data['id'], $saveData['time']); // 如果沒有當前二維碼的掃描次數則為1,有的話就加1 if (empty($fangwen)) { $saveData['num'] = 1; M('fangwen')->create($saveData, true); } else { foreach ($fangwen as $v) { $fangwen = $v; } $saveData['num'] = $fangwen['num'] + 1; M('fangwen')->update($fangwen['id'], $saveData, true); // 跳轉到 二維碼的展示頁面 $this->ma($code); } //載入便籤詳情頁面,直接載入的時候進這個方法,不統計訪問數量 public function ma($code=0) { if (!$code) { $data = $this->getlink(13); $code = $data['code']; } $arr = M('content')->cfg(); $codeData = M('content')->chaxun('code', $code); if (!$codeData) { $this->err->add('資訊不存在'); } else { foreach ($codeData as $v) { $id = $v; $type_id = $v['type_id']; } // 二維碼型別不同查的表也不一樣 switch ($type_id) { case '1': $bianqian = M('biao111')->chaxun('tid', $id['id']); break; case '2': $bianqian = M('biao222')->chaxun('tid', $id['id']); break; default: # code... break; } foreach ($bianqian as $v) { $bianqianData = $v; } $link = $arr[$id['type_id']]; // $id 是二維碼錶中的id $this->assign('data',$bianqianData); $this->assign('code',$id); // 根據表的不同,展示不同的頁面 return $this->fetch($link . '_y.html'); } }