做的项目用户的头像是存在ucenter里面,phpcms通过phpsso这个单点登录系统? 具体的我也不清楚,phpcms自带的v9_member表里没有存放用户头像的字段,如果需要修改,就要修改ucenter里的头像,在phpcms里读取用户头像,也需要phpsso,通过它来链接ucenter 从而获取头像。
那么怎么通过在phpcms的控制器里,可以修改用户头像呢。
首先分为两个部分:1.上传头像,并且保存。2.将保存的头像生成缩略图,并且在指定位置生成缩略图。
生成的缩略图以后,上传的头像就没有用了,可以删除,生成的缩略图就用来当头像显示(很马赛克)
代码如下:
1.文件上传函数saveimage,2.编辑个人资料函数edit_myself()(在这里要修改头像),3.在指定位置生成缩略图do_upload_avatar() 返回值是缩略图的路径,4.初始化phpsso
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');
$filename = $file["tmp_name"];
$pinfo = pathinfo($file["name"]);
$ftype = $pinfo['extension'];
if (!is_uploaded_file($file["tmp_name"])) {
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 (!move_uploaded_file($filename, $img)) {
echo "移动文件出错";
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);
if( $_FILES['avator']['name']!='' ){
$res_save=$this->saveimage($_FILES['avator']);
$ava = $this->do_upload_avatar($phpssouid,$res_save);
}
if ($username) {
$mem = $this->mem->update(array('nickname'=>$username),array('userid'=>$userid));
}
$this->personal();
}
private function do_upload_avatar($phpssouid,$avatarurl){
$dir1 = ceil($phpssouid / 10000);
$dir2 = ceil($phpssouid % 10000 / 1000);
$avatarfile = PHPCMS_PATH.'phpsso_server/uploadfile/avatar/';
$dir = $avatarfile.$dir1.'/'.$dir2.'/'.$phpssouid.'/';
$avatar_url = APP_PATH . 'phpsso_server/uploadfile/avatar/'.$dir1.'/'.$dir2.'/'.$phpssouid.'/';
if(!file_exists($dir)) {
mkdir($dir, 0777, true);
}
$arr_url = parse_url($avatarurl);
$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'];
$filename = PHPCMS_PATH . $filename;
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;
}
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用户修改头像的方法信息内容原创度和真实性等负责。如内容侵犯您的版权或其他权益,请留言并加以说明。站长审查之后若情况属实会及时为您删除。同时遵循 CC 4.0 BY-SA 版权协议,尊重和保护作者的劳动成果,转载请标明出处链接和本声明内容。本文作者:岑誉胜» https://www.ebingou.cn/dmh/15560.html
很赞哦! (1)