phpcms 修改用户头像

做的项目用户的头像是存在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:\workspace\project\shaimobao\phpsso_server/uploadfile/avatar/
                        // echo "-----------";
                        // echo $dir;               D:\workspace\project\shaimobao\phpsso_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:\workspace\project\shaimobao\uploadimg/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;
 
}


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Copyright www.lanxiangchuan.com . 欢迎来做客 ~

鄂公网安备 42068302000128号