phpcms 用户修改头像

Posted 挂件

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
	
	}

 

以上是关于phpcms 用户修改头像的主要内容,如果未能解决你的问题,请参考以下文章

PHPCMS常见问题

PHPCMS如何修改网站名称,网站关键词,网站描述

phpcms 标题设置

Windows修改用户名和头像

我用的phpcms自定义表单,可以修改from表单样式,如果自己做需要添加数据库,创建form表单么

小程序各种功能代码片段整理---持续更新