MODEL('userinfo'); $row = $userinfoM->getInfo(array('uid'=> $uid),array('field'=>'`password`')); $password = isset($row['password']) ? $row['password'] : ''; $password = substr($password, 0, 8); $this->tokenSalt = $this->config['sy_safekey']; return yunEncrypt("{$type}|{$uid}|{$password}", $this->tokenSalt); } //验证二维码传图的密钥(提交图片之前进行验证) private function checkToken($token){ $token = urldecode($token); $this->tokenSalt = $this->config['sy_safekey']; $str = yunDecrypt($token, $this->tokenSalt); $arr = explode('|', $str); if(count($arr) != 3 || $arr[1] == ''){ return false; } //根据uid查询password,对比password $uid = $arr[1]; $userinfoM = $this->MODEL('userinfo'); $row = $userinfoM->getInfo(array('uid'=> $uid),array('field'=>'`password`')); $password = isset($row['password']) ? $row['password'] : ''; $password = substr($password, 0, 8); if($password != $arr[2]){ return false; } return array('uid' => $uid, 'type' => $arr[0]); } //生成二维码(扫码上传入口) public function qrcode_action(){ if(!$this->uid){ exit('请先登录登录'); } //传入上传类型 type , save_action中根据类型选择不同的保存路径 $type = isset($_GET['type']) ? $_GET['type'] : ''; if($type == ''){ exit('扫码上传图片可选类型type:1企业营业执照上传,2个人身份证上传,3个人头像,4企业logo'); } $token = $this->generateToken($type, $this->uid); $token = urlencode($token); $url = Url('wap',array('c'=> 'upload', 'a' => 'p', 't' => $token) ); include_once LIB_PATH."yunqrcode.class.php"; YunQrcode::generatePng2($url, 4); } //wap站扫码上传页面 public function p_action(){ $userinfoM = $this->MODEL('userinfo'); $token = isset($_GET['t']) ? $_GET['t'] : ''; $arr = $this->checkToken($token); if($arr == false || !isset($arr['type']) || !isset($arr['uid']) ){ exit('抱歉,功能维护中'); } $this->yunset('token', $token); $this->yunset('type', $arr['type']); if($arr['type'] == 3 || $arr['type'] == 4 || $arr['type'] == 5 || $arr['type'] == 6){//上传头像 $pic = $icon = ''; if ($arr['type']==3){ $photo = $userinfoM->getUserInfo(array('uid'=>$arr['uid']),array('usertype'=>1,'field'=>'`photo`,`sex`')); if(!$photo['photo']){ if ($photo['sex']==1){ $icon = $this->config['sy_member_icon']; }else{ $icon = $this->config['sy_member_iconv']; } }else{ $pic = $photo['photo']; } }elseif ($arr['type']==4){ $photo = $userinfoM->getUserInfo(array('uid'=>$arr['uid']),array('usertype'=>2,'field'=>'logo`')); if(!$photo['logo']){ $icon = $this->config['sy_unit_icon']; }else{ $pic = $photo['logo']; } }elseif ($arr['type']==5){ $photo = $userinfoM->getUserInfo(array('uid'=>$arr['uid']),array('usertype'=>3,'field'=>'photo`')); if(!$photo['photo']){ $icon = $this->config['sy_lt_icon']; }else{ $pic = $photo['photo']; } }elseif ($arr['type']==6){ $photo = $userinfoM->getUserInfo(array('uid'=>$arr['uid']),array('usertype'=>4,'field'=>'logo`')); if(!$photo['logo']){ $icon = $this->config['sy_px_icon']; }else{ $pic = $photo['logo']; } } $photo['photo'] = checkpic($pic,$icon); $this->yunset('photo',$photo['photo']); $this->seo("wap_upload"); $this->yuntpl(array('wap/uploadimg_userlogo')); }else{ $this->yuntpl(array('wap/uploadimg')); } } //保存上传 public function uploadimg_save_action(){ $token = isset($_POST['token']) ? $_POST['token'] : ''; if($token == ''){ echo json_encode(array('status' => -1, 'msg' => '二维码传图出错,请联系网站管理员')); exit; } $arr = $this->checkToken($token); if($arr == false || !isset($arr['type']) || !isset($arr['uid']) ){ echo json_encode(array('status' => -1, 'msg' => '操作超时,请刷新pc端网页二维码重试' . $token)); exit; } $path = $this->uploadimg_save_path($arr['type'], $arr['uid']); echo json_encode($path);exit; if($path != ''){ echo json_encode(array('status' => 1, 'path' => $path)); exit; }else{ echo json_encode(array('status' => -1, 'msg' => '上传失败,请重试')); exit; } } //根据上传图片的不同环境,保存图片路径到对应的地方,及执行其他逻辑 private function uploadimg_save_path($type, $uid){ $companyM = $this->MODEL('company'); $resumeM = $this->MODEL('resume'); $UserinfoM = $this->MODEL('userinfo'); $uid = addslashes($uid); switch($type){ case 1://上传企业营业执照 // $pic = $this->upload(); // $path = $pic; $cert = $companyM -> getCertInfo(array('uid' => $uid, 'type' => '3')); $postData = array( 'status' => $this -> config['com_cert_status'] == '1' ? 0 : 1, 'ctime' => time() ); if (!empty($_POST['preview'])) { $postData['check'] = $_POST['preview']; } if (!empty($_POST['owner_cert'])) { $postData['owner_cert'] = $_POST['owner_cert']; } if (!empty($_POST['wt_cert'])) { $postData['wt_cert'] = $_POST['wt_cert']; } if (!empty($_POST['other_cert'])) { $postData['other_cert'] = $_POST['other_cert']; } if (!empty($cert) && is_array($cert) && $cert['ctime']) { $return = $companyM -> upCertInfo(array('id'=>intval($cert['id']), 'uid' => $uid), $postData, array('yyzz' => '1', 'usertype' => 2, 'com_name'=>trim($_POST['com_name']))); }else{ $postData['uid'] = $uid; $postData['type'] = '3'; $postData['step'] = '1'; $postData['did'] = $this ->config['did']; $postData['usertype'] = 2; $postData['com_name'] = trim($_POST['com_name']); $return = $companyM -> addCertInfo($postData); } return $return; break; case 2://个人上传身份证 $pic = $this->upload(); $path = $pic; $data = array( 'usertype' => 1, 'name' => $_POST['name'], 'idcard' => $_POST['idcard'], 'idcard_pic' => $path, ); $return = $UserinfoM -> upidcardInfo(array('uid'=>$uid,'wap'=>'1'),$data); if($return['errcode']==9){ $_COOKIE['uid'] = $uid; $_COOKIE['usertype'] = 1; } return $return; break; case 3://个人上传头像 $return = $resumeM -> upPhoto(array('uid'=>$uid),array('utype'=>'user','base'=>$_POST['uimage'])); return $return; break; case 4://企业上传logo $return = $companyM -> upLogo(array('uid'=>$uid),array('utype'=>'user','base'=>$_POST['uimage'])); return $return; break; } return ''; } private function upload($path=''){ if($_POST['preview']){ $upArr = array( 'dir' => 'cert', 'base' => $_POST['preview'], ); $result = $this -> newupload($upArr); if (!empty($result['msg'])){ $return['msg'] = $result['msg']; echo json_encode(array('msg' => $result['msg']));exit; }elseif (!empty($result['picurl'])){ return $result['picurl']; } }else{ echo json_encode(array('status' => -1, 'msg' => '请上传图片'));exit; } } /** * @desc 处理单个图片上传 * @param file/需上传文件; dir/上传目录; type/上传图片类型; base/需上传base64; preview/pc预览即上传 */ private function newupload($data = array('file'=>null,'dir'=>null,'type'=>null,'base'=>null,'preview'=>null)){ $UploadM = $this->MODEL('upload'); $upArr = array( 'file' => $data['file'], 'dir' => $data['dir'], 'type' => $data['type'], 'base' => $data['base'], 'preview' => $data['preview'] ); $return = $UploadM -> newUpload($upArr); return $return; } /** 1.统计已经上传图片地方、上传文件地方, (搜索Upload_pic) 有哪些操作,验证了什么,保存了什么信息(文件路径), 前台:企业上传logo、上传企业执照照片、,个人上传简历照片, 2.把共用的验证逻辑写到上传类中, 4.写一个手机端拍照/相册上传的页面 5.写一个生产二维码扫码上传的接口 6.pc端需要上传的地方,添加扫码上传的二维码展示 7. to do : 手机端上传成功,让pc端页面触发刷新(参考微信二维码付款,订单页面触发刷新) */ function upCertPic_action(){ $UploadM = $this -> MODEL('upload'); $picurl = ''; $msg = ''; $error = ''; if(isset($_POST['preview'])){ // pc端上传 $upArr = array( 'base' => $_POST['preview'], 'dir' => 'cert' ); $uploadM = $this->MODEL('upload'); $pic = $uploadM->newUpload($upArr); if (!empty($pic['msg'])){ $error = 2; $msg = $pic['msg']; }elseif (!empty($pic['picurl'])){ $error = 1; $picurl = $pic['picurl']; } }else{ $error = 2; $msg = '请选择图片'; } $return['error'] = $error; $return['msg'] = $msg; $return['picurl'] = $picurl; echo json_encode($return);die; } } ?>