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;
	
	}

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com