上次发了个调用Google api的生成二维码,如果服务器无法访问网络就无效了。
下面是整合将phpqrcode整合到TP生成二维码就可以解决这个问题了。其实也很简单,使用方法如下:

先下载附件解压至ThinkPHP/Extend/Vendor目录,目录不存在自己创建。



vendor("phpqrcode.phpqrcode");
$data = 'http://www.baidu.com';
// 纠错级别:L、M、Q、H
$level = 'L';
// 点的大小:1到10,用于手机端4就可以了
$size = 4;
// 下面注释了把二维码图片保存到本地的代码,如果要保存图片,用$fileName替换第二个参数false
//$path = "images/";
// 生成的文件名
//$fileName = $path.$size.'.png';
QRcode::png($data, false, $level, $size);
return $fileName //返回地址



项目运用: 在controller调用

$img = qrcode($url);


公共函数:

/*
* 生成二维码
* */
function qrcode($url,$level=3,$size=4){
Vendor('phpqrcode.phpqrcode');
$errorCorrectionLevel =intval($level) ;//容错级别
$matrixPointSize = intval($size);//生成图片大小
//生成二维码图片
//echo $_SERVER['REQUEST_URI'];
$object = new \QRcode();

$date = date('Y-m-d');
$path = "Uploads/qrcode/".$date.'/';
if (!file_exists($path)) {
mkdir ("$path", 0777, true);
}
$name = time().'_'.mt_rand();
//生成的文件名
$fileName = $path.$name.'.png';
$res = $object->png($url, $fileName, $errorCorrectionLevel, $matrixPointSize, 2);
return $fileName;
}


微信公众号实战例子:

public function redirect_url(){
$config = C('WEIXINPAY_CONFIG');
$oauth = load_wechat('Oauth');
$result = $oauth->getOauthAccessToken();
//$result['openid'] = "oB8J-xJiq54q-z4pHP47pLinPf_o";
$userinfo = $oauth->getOauthUserinfo($result['access_token'], $result['openid']);
//判断是否第一次登陆
$wx = M('wx');
$user = M('user');
$res = $wx->where("openid = '{$result['openid']}'")->find();

if($res){ // 判断已经注册的信息
//是否过期
if($res['expires_in']<time()){
$wx->where("openid = '{$result['openid']}'")->setField('access_token',$result['access_token']);
}
//查找会员数据
$info = $user->where("id = {$res['userid']}")->find();
session('user',$info);
//是否禁用
if($info['status']==0){
$this->redirect('error');
}
//是否有二维码
if(!$res['qrcode']){
if($res['t_id']){//一级分销
$siteurl = $_SERVER['SERVER_NAME'];
$url = 'http://'.$siteurl;
$img = qrcode($url);
}else{
$siteurl = $_SERVER['SERVER_NAME'];
$url = 'http://'.$siteurl.'?t='.$info['id'];
$img = qrcode($url);
}
$user->where("id = {$res['userid']}")->setField('qrcode','http://'.$siteurl.'/'.$img);
}
$this->redirect('Home/Circle/index');


}else{ // 判断为第一次登录平台
if(C('is_open_reg')==0){
$this->redirect('error');
}
//是否推荐
$t_id = session('tid');
if($t_id){
$data['t_id'] = $t_id;
}
//自动注册
$data['nickname'] = $userinfo['nickname'];
$headimgurl = substr($userinfo['headimgurl'], 0,-2);
$data['headimgurl'] = $headimgurl.'/46';
$data['country'] = $userinfo['country'];
$data['province'] = $userinfo['province'];
$data['sex'] = $userinfo['sex'];
$data['user_agent'] = serialize(get__browser());
$data['city'] = $userinfo['city'];
$data['reg_ip'] = get_client_ip();
$data['points'] = 10;
$data['last_ip'] = get_client_ip();
$data['reg_time'] = time();
$data['last_time'] = time();
$data['logins'] = 1;
$userid = $user->add($data);
if($userid){
if($t_id){
//推荐码(二维码)
$siteurl = $_SERVER['SERVER_NAME'];
$url = 'http://'.$siteurl;
$img = qrcode($url);
}else{
$siteurl = $_SERVER['SERVER_NAME'];
$url = 'http://'.$siteurl.'?t='.$userid;
$img = qrcode($url);
}
$user->where("id = $userid")->setField('qrcode','http://'.$siteurl.'/'.$img);
$data1['userid'] = $userid;
$data1['openid'] = $result['openid'];
$data1['access_token'] = $result['access_token'];
$data1['expires_in'] = time()+$result['expires_in'];
$res2 = $wx->add($data1);
if($res2){
$data['id'] = $userid;
session('user',$data);
$this->redirect('Home/Circle/index');
}
}
}
}