引入了 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');
}
}