Files
Pichome/user/my/profile.php
2024-01-31 01:00:33 +08:00

228 lines
10 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
if (!defined('IN_OAOOA')) {//所有的php文件必须加上此句防止被外部调用
exit('Access Denied');
}
$navtitle="资料修改";
Hook::listen('check_login');
global $_G;
$uid = $_G['uid'];
$do = isset($_GET['do']) ? trim($_GET['do']) : 'personal';
require_once libfile('function/user', '', 'user');
$user = C::t('user')->get_user_by_uid($uid);
$ismobile = helper_browser::ismobile();
if(empty($user['avatarstatus']) && dzz_check_avatar($_G['uid'], 'middle')) {
C::t('user')->update($_G['uid'], array('avatarstatus'=>'1'));
}
if ($do == 'personal') {
if (submitcheck('accountedit')) {
$uid = $_GET['uid'];
$user = C::t('user')->fetch_by_uid($uid);
if (!$uid) exit(json_encode(array('error' => true, 'msg' => '用户不存在')));
if(isset($_GET['imgpath'])){
if($ismobile){
upbase64(trim($_GET['imgpath']),$uid);
}else{
$base64img = base64EncodeImage($_GET['imgpath']);
if(upbase64($base64img,$uid)){
@unlink($_GET['imgpath']);
}
}
}
//用户名验证
$username = trim($_GET['username']);
if (empty($username)) {
exit(json_encode(array('error' => true, 'msg' => lang('name_will'))));
}
$nickname = trim($_GET['nickname']);
$usernamelen = dstrlen($_GET['nickname']);
if ($usernamelen < 3) {
exit(json_encode(array('error' => true, 'msg' => lang('profile_nickname_tooshort'))));
} elseif ($usernamelen > 30) {
// showmessage('profile_nickname_toolong');
exit(json_encode(array('error' => true, 'msg' => lang('profile_nickname_tooshort'))));
} elseif (!check_username(addslashes(trim(stripslashes($nickname))))) {
exit(json_encode(array('error' => true, 'msg' => lang('profile_username_illegal'))));
}
//如果输入用户名,检查用户名不能重复
if (strtolower($nickname) != strtolower($user['nickname'])) {
if (C::t('user')->fetch_by_nickname($nickname)) {
exit(json_encode(array('error' => true, 'msg' => lang('user_registered_retry'))));
}
}
//如果输入手机号码,检查手机号码不能重复
$phone = trim($_GET['phone']);
if ($phone) {
if (!preg_match("/^\d+$/", $phone)) {
exit(json_encode(array('error' => true, 'msg' => lang('user_phone_illegal'))));
}
if ($phone != $user['phone'] && C::t('user')->fetch_by_phone($phone)) {
exit(json_encode(array('error' => true, 'msg' => lang('user_phone_registered'))));
}
}
//如果输入微信号,检查微信号不能重复
$weixinid = trim($_GET['weixinid']);
if ($weixinid) {
if (!preg_match("/^[a-zA-Z\d_]{5,}$/i", $weixinid)) {
exit(json_encode(array('error' => true, 'msg' => lang('weixin_illegal'))));
}
if ($weixinid != $user['weixinid'] && C::t('user')->fetch_by_weixinid($weixinid)) {
exit(json_encode(array('error' => true, 'msg' => lang('weixin_registered'))));
}
}
//邮箱验证部分
$email = strtolower(trim($_GET['email']));
if (!isemail($email)) {
exit(json_encode(array('error' => true, 'msg' => lang('profile_email_illegal'))));
} elseif (!check_emailaccess($email)) {
exit(json_encode(array('error' => true, 'msg' => lang('profile_email_domain_illegal'))));
}
if ($email != strtolower($user['email'])) {
//邮箱不能重复
if (C::t('user')->fetch_by_email($email)) {
exit(json_encode(array('error' => true, 'msg' => lang('email_registered_retry'))));
}
}
//密码验证部分
if ($_GET['password']) {
//验证原密码
$password0=$_GET['password0'];
if( md5(md5("").$user['salt'])!=$user['password']) {
if(md5(md5($password0).$user['salt'])!=$user['password']){
exit(json_encode(array('error' => true, 'msg' => '原密码错误')));
}
}
if ($_G['setting']['pwlength']) {
if (strlen($_GET['password']) < $_G['setting']['pwlength']) {
exit(json_encode(array('error' => true, 'msg' => lang('profile_password_tooshort'))));
}
}
if ($_GET['password'] !== $_GET['password2']) {
exit(json_encode(array('error' => true, 'msg' => lang('profile_passwd_notmatch'))));
}
}
$password = $_GET['password'];
if ($password) {
$salt = substr(uniqid(rand()), -6);
$setarr = array('salt' => $salt, 'password' => md5(md5($password) . $salt), 'nickname' => $nickname, 'username' => $username, 'phone' => $phone, 'weixinid' => $weixinid, 'secques' => '', 'email' => $email);
} else {
$setarr = array('nickname' => $nickname, 'username' => $username, 'email' => $email, 'phone' => $phone, 'weixinid' => $weixinid);
}
C::t('user')->update($uid, $setarr);
$themecolor = isset($_GET['themecolor']) ? trim($_GET['themecolor']) : '';
C::t('user_setting')->update_by_skey('pichomeusertheme', $themecolor, $uid);
exit(json_encode(array('success' => true)));
} else {
$uid = getglobal('uid');
$userdata = C::t('user')->fetch($uid);
$theme = GetThemeColor();
if ($ismobile) {
include template('mobile/page/profile');
} else {
include template('pc/page/profile');
}
}
}
elseif ($do == 'uploadimg') {//上传用户头像
$uid = getglobal('uid');
$files = $_FILES['file'];
$type = pathinfo($files['name'],PATHINFO_EXTENSION);
if (!preg_match('/(gif|jpe?g|png)$/i', $type) || !preg_match('/(gif|jpe?g|png)$/i', $files['type'])|| $files['size'] >= 1024 * 1024 * 2) {
exit(json_encode(array('error' => 'file is not invalite')));
}
$imgpath = './data/avatar/'.md5($uid).'.'.$type;
$return = move_uploaded_file($files["tmp_name"], $imgpath);
if ($return) {
exit(json_encode(array('path' => $imgpath)));
} else {
exit(json_encode(array('error' => 'upload failed')));
}
}
function dzz_check_avatar($uid, $size = 'middle', $type = 'virtual')
{
global $_G;
$url = $_G['siteurl'] . "avatar.php?uid=$uid&size=$size&type=$type&check_file_exists=1";
$res = dfsockopen($url, 500000, '', '', TRUE, '', 20);
if ($res == 1) {
return 1;
} else {
return 0;
}
}
function updatesetting($setting, $settingnew)
{
$updatecache = false;
$settings = array();
foreach ($settingnew as $key => $val) {
if ($setting[$key] != $val) {
$updatecache = TRUE;
if (in_array($key, array('timeoffset', 'regstatus', 'oltimespan', 'seccodestatus'))) {
$val = (float)$val;
}
$settings[$key] = $val;
}
}
if ($settings) {
C::t('setting')->update_batch($settings);
}
if ($updatecache) {
updatecache('setting');
}
return true;
}
function base64EncodeImage ($image_file) {
$base64_image = '';
$image_info = getimagesize($image_file);
$image_data = fread(fopen($image_file, 'r'), filesize($image_file));
$base64_image = chunk_split(base64_encode($image_data));
return $base64_image;
}
function upBase64($base64Data, $uid)
{
$img = base64_decode(str_replace(array('data:image/png;base64,','data:image/jpeg;base64,','data:image/gif;base64,','data:image/jpg;base64,'), '', $base64Data));
$temp = getglobal('setting/attachdir') . 'cache/' . random(5) . '.png';
//移动文件
if (!(file_put_contents($temp, $img))) { //移动失败
return false;
} else { //移动成功,生成3种尺寸头像
$home = get_home($uid);
if (!is_dir(DZZ_ROOT . './data/avatar/' . $home)) {
set_home($uid, DZZ_ROOT . './data/avatar/');
}
$bigavatarfile = DZZ_ROOT . './data/avatar/' . get_avatar($uid, 'big');
$middleavatarfile = DZZ_ROOT . './data/avatar/' . get_avatar($uid, 'middle');
$smallavatarfile = DZZ_ROOT . './data/avatar/' . get_avatar($uid, 'small');
include_once libfile('class/image');
$image = new image();
$success = 0;
if ($thumb = $image->Thumb($temp, $bigavatarfile, 200, 200, 2)) {
$success++;
}
if ($thumb = $image->Thumb($temp, $middleavatarfile, 120, 120, 2)) {
$success++;
}
if ($thumb = $image->Thumb($temp, $smallavatarfile, 48, 48, 2)) {
$success++;
}
if ($success > 2) {
C::t('user')->update($uid, array('avatarstatus' => '1'));
}
@unlink($temp);
return $success;
}
}