如何生成二维码并统计扫描次数,展示二维码页面

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

猜你喜欢

转载自blog.csdn.net/qq_39835505/article/details/85248524