做的项目用户的头像是存在ucenter里面,phpcms通过phpsso这个单点登录系统? 具体的我也不清楚,phpcms自带的v9_member表里没有存放用户头像的字段,如果需要修改,就要修改ucenter里的头像,
在phpcms里读取用户头像,也需要phpsso,通过它来链接ucenter 从而获取头像。
那么怎么通过在phpcms的控制器里,可以修改用户头像呢。
首先分为两个部分:1.上传头像,并且保存。2.将保存的头像生成缩略图,并且在指定位置生成缩略图。
生成的缩略图以后,上传的头像就没有用了,可以删除,生成的缩略图就用来当头像显示(很马赛克)
代码如下:
1.文件上传函数saveimage,2.编辑个人资料函数edit_myself()(在这里要修改头像),3.在指定位置生成缩略图do_upload_avatar() 返回值是缩略图的路径,4.初始化phpsso
/* 文件上传 * @param type $file $_FILES['image'] * @param int $max_file_size 上传文件大小限制, 单位BYTE * @param string $img_folder 上传文件路径 * @param int $imgpreview 是否生成预览图(1为生成,其他为不生成); * @param type $imgpreviewsize 缩略图比例 * @return string 图片路径 * */ public function saveimage($file, $max_file_size = 500000, $img_folder = "uploadfile/", $imgpreview = 0, $imgpreviewsize = "1/3") { //上传头像并保存,为更改个人资料里的头像做准备 //图片扩展名设置 $uptypes = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif', 'image/bmp'); //$file1 = $_FILES["image1"][tmp_name];//临时文件 $filename = $file["tmp_name"]; $pinfo = pathinfo($file["name"]); //array $ftype = $pinfo['extension']; //文件扩展名 // var_dump($ftype);exit; if (!is_uploaded_file($file["tmp_name"])) {//是否存在文件 echo "图片不存在!"; exit; } // $file = $_FILES["image1"]; // if ($max_file_size < $file["size"]) {//检查文件大小 // echo "文件太大!"; // exit; // } if (!in_array($file["type"], $uptypes)) {//检查文件类型 echo "文件类型不符!" . $file["type"]; exit; } if (!file_exists($img_folder)) { mkdir($img_folder); } $img = $img_folder . time() .rand(1,100). "." . $ftype; //图片路径加图片名 有了 时间戳和随机数 所以就不必验证文件名了,如果还能有重复的,我也很无奈啊。 // if (file_exists($img)) { // echo "同名文件已经存在了"; // exit; // } if (!move_uploaded_file($filename, $img)) { echo "移动文件出错"; exit; } // echo $img;exit; return $img; } public function edit_myself(){ //编辑个人资料 用到上传的头像 $userid = param::get_cookie('_userid'); $username=$_POST['username']; $this->mem = pc_base::load_model('member_model'); $res=$this->mem->select(array('userid'=>$userid),"phpssouid"); $phpssouid=$res[0]['phpssouid']; $avator=get_memberavatar($phpssouid); //var_dump($avator);exit; // echo "<pre>"; // var_dump($_POST); // echo "<br>"; // var_dump($_FILES);exit; //var_dump($res_save);exit; //uploadimg/1494923496.jpg if( $_FILES['avator']['name']!='' ){ $res_save=$this->saveimage($_FILES['avator']); $ava = $this->do_upload_avatar($phpssouid,$res_save); //保存头像 } //var_dump($ava);exit; if ($username) { $mem = $this->mem->update(array('nickname'=>$username),array('userid'=>$userid)); } $this->personal(); } private function do_upload_avatar($phpssouid,$avatarurl){ //将上传的头像保存是phpsso的索洛图文件夹,并生成缩略图 //echo " --1-----1";exit; // 处理文件夹 开始 //根据用户id给文件夹起名字 $dir1 = ceil($phpssouid / 10000); $dir2 = ceil($phpssouid % 10000 / 1000); //创建图片存储文件夹 //此处硬编码,图片强制存储到sso中 $avatarfile = PHPCMS_PATH.'phpsso_server/uploadfile/avatar/'; $dir = $avatarfile.$dir1.'/'.$dir2.'/'.$phpssouid.'/'; $avatar_url = APP_PATH . 'phpsso_server/uploadfile/avatar/'.$dir1.'/'.$dir2.'/'.$phpssouid.'/'; // echo $avatarfile; D:workspaceprojectshaimobaophpsso_server/uploadfile/avatar/ // echo "-----------"; // echo $dir; D:workspaceprojectshaimobaophpsso_server/uploadfile/avatar/3/1/20750/ // echo "--------"; // echo $avatar_url; http://www.cms.localhost/phpsso_server/uploadfile/avatar/3/1/20750/ // exit; if(!file_exists($dir)) { //根据id创建文件夹 mkdir($dir, 0777, true); } //处理文件夹 end $arr_url = parse_url($avatarurl); // echo 1111; // var_dump( $arr_url);exit; // path 'uploadimg/1494923821.jpg $filename = substr($arr_url['path'],0,1)=='/'?substr($arr_url['path'],1):$arr_url['path']; $filename = substr($arr_url['path'],0,1)=='\'?substr($arr_url['path'],1):$arr_url['path']; // echo $filename;exit; // uploadimg/1494923821.jpg $filename = PHPCMS_PATH . $filename; //echo $filename; // D:workspaceprojectshaimobaouploadimg/1494923889.jpg if( !file_exists($filename) ) return; //生成缩略图 pc_base::load_sys_class('image','','0'); $image = new image(1,0); $image->thumb($filename, $dir.'30x30.jpg', 30, 30); $image->thumb($filename, $dir.'45x45.jpg', 45, 45); $image->thumb($filename, $dir.'90x90.jpg', 90, 90); $image->thumb($filename, $dir.'180x180.jpg', 180, 180); $aa=$image->thumb($filename, $dir.'480x480.jpg', 480, 480); $this->_init_phpsso(); $status = $this->client->ps_updateavatar($phpssouid); $avatar = $avatar_url.'480x480.jpg'; if( file_exists($filename) ){ //删除临时文件,只保留缩略图 unlink ($filename); } return $avatar; } /** * 初始化phpsso * about phpsso, include client and client configure * @return string phpsso_api_url phpsso地址 */ private function _init_phpsso() { pc_base::load_app_class('client', 'member', 0); define('APPID', pc_base::load_config('system', 'phpsso_appid')); $phpsso_api_url = pc_base::load_config('system', 'phpsso_api_url'); $phpsso_auth_key = pc_base::load_config('system', 'phpsso_auth_key'); $this->client = new client($phpsso_api_url, $phpsso_auth_key); return $phpsso_api_url; }