做的项目用户的头像是存在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 用户修改头像的更多相关文章

  1. 基于SpringBoot从零构建博客网站 - 设计可扩展上传模块和开发修改头像密码功能

    上传模块在web开发中是很常见的功能也是很重要的功能,在web应用中需要上传的可以是图片.pdf.压缩包等其它类型的文件,同时对于图片可能需要回显,对于其它文件要能够支持下载等.在守望博客系统中对于上 ...

  2. Laravel大型项目系列教程(四)显示文章列表和用户修改文章

    小编心语:不知不觉已经第四部分了,非常感谢很多人给小编提的意见,改了很多bug,希望以后能继续帮小编找找茬~小编也不希望误导大家~这一节,主要讲的 是如何显示文章列表和让用户修改文章,小编预告一下(一 ...

  3. svn 强制用户添加注释 和 允许用户修改注释

    当我们用TortoiseSVN提交代码时,有很多人不喜欢写注释,导致以后代码版本多,也不清楚哪个版本到底改了什么东西.所以在提交的时候,我会强制要求添加注释.这是如何实现的?这个话题就涉及到了svn的 ...

  4. Maven-007-Nexus 用户添加,用户角色分配,用户修改密码,管理员重置用户密码

    配置好 maven nexus 私服后,默认的用户可通过查看[Users]查看当前私服中所存在的用户,如下图所示:

  5. Windows下如何检测用户修改了系统时间并且把系统时间改回来

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Windows下如何检测用户修改了系统时间并且把系统时间改回来.

  6. MySql添加用户,新建数据库,用户授权,删除用户,修改密码

    转自:http://www.cnblogs.com/fly1988happy/archive/2011/12/15/2288554.html MySql中添加用户,新建数据库,用户授权,删除用户,修改 ...

  7. 《Python cookbook》 “定义一个属性可由用户修改的装饰器” 笔记

    看<Python cookbook>的时候,第9.5部分,"定义一个属性可由用户修改的装饰器",有个装饰器理解起来花了一些时间,做个笔记免得二刷这本书的时候忘了 完整代 ...

  8. 无法给MySQL root用户修改密码的解决方法

    本人编译安装完MySQL数据库,想给root用户修改密码,结果无法修改,并且报错,报错大概信息如下: mysqladmin: connect to server at 'localhost' fail ...

  9. 【php增删改查实例】第二十一节 - 用户修改功能

    19.1 添加用户修改的按钮 打开userManage.html,找到新增按钮的地方: 我们不难发现,编辑按钮就差不多应该在新建用户的右边. 那么,假如我现在是新人,对这个项目本身就不太熟悉,那么我得 ...

随机推荐

  1. Oracle11g温习-第十四章:约束( constraint )

    2013年4月27日 星期六 10:48 1.约束的功能 通过一些强制性商业规则,保证数据的完整性.一致性 2.约束的类别 1 )  not null    不允许为空     2 )  check  ...

  2. visual studio利用 indent guides 格式化代码 添加竖线

    点击 Visual Studio 2013 工具—扩展和更新—联机 然后输入indent guides 自动搜索出来这个插件(如图).注:Visual Studio 2010需要自己在网上下载安装. ...

  3. 音频 API 一览

    iOS 和 OS X 平台都有一系列操作音频的 API,其中涵盖了从低到高的全部层级.随着时间的推移.平台的增长以及改变,不同 API 的数量可以说有着非常巨大的变化.本文对当前可以使用的 API 以 ...

  4. Mysql优化要点

    优化MySQL Mysql优化要点 慢查询 Explain mysql慢查询 注意事项 SELECT语句务必指明字段名称 SELECT *增加很多不必要的消耗(cpu.io.内存.网络带宽):增加了使 ...

  5. maven打包上传到本地中央库

    pom文件中添加插件如下 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins< ...

  6. MINIUI应用

    MINIUI是一款优秀的JS前端web框架,提供丰富.强大控件库,能快速开发企业级Web应用软件. 属于付费插件. 如果有兴趣推荐去这个网址看看.MiniUI 在线示例  http://www.min ...

  7. Java线程池理解及用法

    前言 多线程的异步执行方式,虽然能够最大限度发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担.线程本身也要占用内存空间,大量的线程会占用内存资源并且可能会导致Out of Memory ...

  8. js之DOM元素遍历

    对于元素间的空格,IE9之前的版本不会返回文本节点,而且他所有浏览器都会返回文本节点.这样就导致 使用childNodes和firstChild等属性时的行为不一致.从而有了Element Trave ...

  9. pyhton-函数初级

    f = open("司马光砸缸", mode="r+", encoding="utf-8") f.seek(12) f.truncate() ...

  10. bootstrap 下拉选中查询

    <div class="form-group"> <label class="col-lg-3 col-sm-2 control-label" ...