📄 memcp.php
字号:
<?php
/*
[Discuz!] (C)2001-2007 Comsenz Inc.
This is NOT a freeware, use is subject to license terms
$Id: memcp.php 13660 2008-04-30 11:52:13Z monkey $
*/
define('NOROBOT', TRUE);
require_once './include/common.inc.php';
$discuz_action = 7;
if(!$discuz_uid) {
showmessage('not_loggedin', NULL, 'HALTED');
}
$action = !empty($action) ? $action : '';
$operation = !empty($operation) ? $operation : '';
$maxbiosize = $maxbiosize ? $maxbiosize : 200;
$maxbiotradesize = $maxbiotradesize ? $maxbiotradesize : 400;
if(!$action) {
if($allownickname) {
$member = $db->fetch_first("SELECT mf.nickname, m.gender, m.groupid
FROM {$tablepre}memberfields mf, {$tablepre}members m WHERE m.uid='$discuz_uid' AND mf.uid=m.uid");
} else {
$member = array('nickname' => '');
}
$validating = array();
if($regverify == 2 && $groupid == 8) {
if($validating = $db->fetch_first("SELECT * FROM {$tablepre}validating WHERE uid='$discuz_uid'")) {
$validating['moddate'] = $validating['moddate'] ? gmdate("$dateformat $timeformat", $validating['moddate'] + $timeoffset * 3600) : 0;
$validating['adminenc'] = rawurlencode($validating['admin']);
}
}
$member = $db->fetch_first("SELECT uid, posts, digestposts, oltime, regdate, regip, lastvisit, lastip, lastpost FROM {$tablepre}members WHERE uid='$discuz_uid'");
$member['postperday'] = $timestamp - $member['regdate'] > 86400 ? round(86400 * $member['posts'] / ($timestamp - $member['regdate']), 2) : $member['posts'];
$member['regdate'] = gmdate("$dateformat", $member['regdate'] + $timeoffset * 3600);
$member['lastvisit'] = gmdate("$dateformat $timeformat", $member['lastvisit'] + ($timeoffset * 3600));
$member['lastpost'] = $member['lastpost'] ? gmdate("$dateformat $timeformat", $member['lastpost'] + ($timeoffset * 3600)) : 'x';
require_once DISCUZ_ROOT.'./include/misc.func.php';
$member['regiplocation'] = convertip($member['regip']);
$member['lastiplocation'] = convertip($member['lastip']);
$loglist = array();
$query = $db->query("SELECT * FROM {$tablepre}creditslog WHERE uid='$discuz_uid' ORDER BY dateline DESC LIMIT 10");
while($log = $db->fetch_array($query)) {
$log['fromtoenc'] = rawurlencode($log['fromto']);
$log['dateline'] = gmdate("$dateformat $timeformat", $log['dateline'] + $timeoffset * 3600);
$loglist[] = $log;
}
if($creditspolicy['promotion_visit'] || $creditspolicy['promotion_register']) {
$promotion_visit = $promotion_register = $space = '';
foreach(array('promotion_visit', 'promotion_register') as $val) {
if(!empty($creditspolicy[$val]) && is_array($creditspolicy[$val])) {
foreach($creditspolicy[$val] as $id => $policy) {
$$val .= $space.$extcredits[$id]['title'].' +'.$policy;
$space = ' ';
}
}
}
}
include template('memcp_home');
} elseif($action == 'profile') {
$typeid = empty($typeid) || !in_array($typeid, array(1, 2, 3, 4, 5, 6)) ? 2 : $typeid;
require_once DISCUZ_ROOT.'./forumdata/cache/cache_profilefields.php';
$member = $db->fetch_first("SELECT * FROM {$tablepre}members m
LEFT JOIN {$tablepre}memberfields mf ON mf.uid=m.uid
WHERE m.uid='$discuz_uid'");
$seccodecheck = ($seccodestatus & 8) && (!$seccodedata['minposts'] || $posts < $seccodedata['minposts']);
$secqaacheck = false;
if(!submitcheck('editsubmit', 0, $seccodecheck)) {
require_once DISCUZ_ROOT.'./include/editor.func.php';
if($typeid == 1) {
if($seccodecheck) {
$seccode = random(6, 1) + $seccode{0} * 1000000;
}
} elseif($typeid == 2) {
$gendercheck = array($member['gender'] => 'checked="checked"');
} elseif($typeid == 4) {
$bio = explode("\t\t\t", $member['bio']);
$member['bio'] = html2bbcode($bio[0]);
$member['biotrade'] = html2bbcode($bio[1]);
$member['signature'] = html2bbcode($member['sightml']);
} elseif($typeid == 5) {
$invisiblechecked = $member['invisible'] ? 'checked="checked"' : '';
$emailchecked = $member['showemail'] ? 'checked="checked"' : '';
$newschecked = $member['newsletter'] ? 'checked="checked"' : '';
$tppchecked = array($member['tpp'] => 'selected="selected"');
$pppchecked = array($member['ppp'] => 'selected="selected"');
$toselect = array(strval((float)$member['timeoffset']) => 'selected="selected"');
$pscheck = array(intval($member['pmsound']) => 'checked="checked"');
$emcheck = array($member['editormode'] => 'selected="selected"');
$tfcheck = array($member['timeformat'] => 'checked="checked"');
$dfcheck = array($member['dateformat'] => 'selected="selected"');
$styleselect = '';
$query = $db->query("SELECT styleid, name FROM {$tablepre}styles WHERE available='1'");
while($style = $db->fetch_array($query)) {
$styleselect .= "<option value=\"$style[styleid]\" ".
($style['styleid'] == $member['styleid'] ? 'selected="selected"' : NULL).
">$style[name]</option>\n";
}
$customshow = str_pad(base_convert($member['customshow'], 10, 3), 3, 0, STR_PAD_LEFT);
$sschecked = array($customshow{0} => 'selected="selected"');
$sachecked = array($customshow{1} => 'selected="selected"');
$sichecked = array($customshow{2} => 'selected="selected"');
$dateformatlist = array();
if(!empty($userdateformat) && ($count = count($userdateformat))) {
for($num =1; $num <= $count; $num ++) {
$dateformatlist[$num] = str_replace(array('n', 'j', 'y', 'Y'), array('mm', 'dd', 'yy', 'yyyy'), $userdateformat[$num-1]);
}
}
$feedchecks = array();
$customaddfeed = intval($member['customaddfeed']);
if($customaddfeed > 0) {
$customaddfeed = sprintf('%03b', $customaddfeed);
for($i = 1; $i <= 3; $i++) {
$feedchecks[$i] = $customaddfeed[3 - $i] ? 'checked="checked"' : '';
}
}
$defaultcheck = $customaddfeed == 0 ? 'checked="checked"' : '';
$customcheck = $feedchecks ? 'checked="checked"' : '';
$showfeedcheck = $customaddfeed == 0 ? 'none' : '';
} elseif($typeid == 6) {
require_once DISCUZ_ROOT.'/uc_client/client.php';
$uc_avatarflash = uc_avatar($discuz_uid);
}
include template('memcp_profile');
} else {
require_once DISCUZ_ROOT.'./include/discuzcode.func.php';
$membersql = $memberfieldsql = $authstradd1 = $authstradd2 = $newpasswdadd = '';
if($typeid == 1) {
$emailnew = dhtmlspecialchars($emailnew);
if($questionidnew == -1) {
$secquesnew = $discuz_secques;
$questionidnew = $answernew = '';
} else {
$secquesnew = quescrypt($questionidnew, $answernew);
}
if(($adminid == 1 || $adminid == 2 || $adminid == 3) && !$secquesnew && $admincp['forcesecques']) {
showmessage('profile_admin_security_invalid');
}
if(!empty($newpassword) && $newpassword != $newpassword2) {
showmessage('profile_passwd_notmatch');
}
require_once DISCUZ_ROOT.'./uc_client/client.php';
$ucresult = uc_user_edit($discuz_user, $oldpassword, $newpassword, $emailnew);
if($ucresult == -1) {
showmessage('profile_passwd_wrong', NULL, 'HALTED');
} elseif($ucresult == -4) {
showmessage('profile_email_illegal');
} elseif($ucresult == -5) {
showmessage('profile_email_domain_illegal');
} elseif($ucresult == -6) {
showmessage('profile_email_duplicate');
}
if(!empty($newpassword)) {
$newpasswdadd = ", password='".md5(random(10))."'";
}
if($regverify == 1 && $adminid == 0 && (($grouptype == 'member' && $adminid == 0) || $groupid == 8)) {
$idstring = random(6);
$groupid = 8;
require_once DISCUZ_ROOT.'./forumdata/cache/usergroup_8.php';
$authstradd1 = ", groupid='8'";
$authstradd2 = "authstr='$timestamp\t2\t$idstring'";
sendmail("$discuz_userss <$emailnew>", 'email_verify_subject', 'email_verify_message');
}
$membersql = "secques='$secquesnew', email='$emailnew' $newpasswdadd $authstradd1";
$memberfieldsql = $authstradd2;
} elseif($typeid == 2) {
$censorexp = '/^('.str_replace(array('\\*', "\r\n", ' '), array('.*', '|', ''), preg_quote(($censoruser = trim($censoruser)), '/')).')$/i';
if($censoruser && (@preg_match($censorexp, $nicknamenew) || @preg_match($censorexp, $cstatusnew))) {
showmessage('profile_nickname_cstatus_illegal');
}
if($msnnew && !isemail($msnnew)) {
showmessage('profile_alipay_msn');
}
if($alipaynew && !isemail($alipaynew)) {
showmessage('profile_alipay_illegal');
}
$sitenew = dhtmlspecialchars(trim(preg_match("/^https?:\/\/.+/i", $sitenew) ? $sitenew : ($sitenew ? 'http://'.$sitenew : '')));
$icqnew = preg_match ("/^([0-9]+)$/", $icqnew) && strlen($icqnew) >= 5 && strlen($icqnew) <= 12 ? $icqnew : '';
$qqnew = preg_match ("/^([0-9]+)$/", $qqnew) && strlen($qqnew) >= 5 && strlen($qqnew) <= 12 ? $qqnew : '';
$bdaynew = datecheck($bdaynew) ? $bdaynew : '0000-00-00';
$yahoonew = dhtmlspecialchars($yahoonew);
$msnnew = dhtmlspecialchars($msnnew);
$taobaonew = dhtmlspecialchars($taobaonew);
$alipaynew = dhtmlspecialchars($alipaynew);
$nicknamenew = $allownickname ? cutstr(censor(dhtmlspecialchars($nicknamenew)), 30) : '';
$cstatusadd = $allowcstatus ? ', customstatus=\''.cutstr(censor(dhtmlspecialchars($cstatusnew)), 30).'\'' : '';
$gendernew = empty($gendernew) ? 0 : intval($gendernew);
$locationnew = cutstr(censor(dhtmlspecialchars($locationnew)), 30);
$membersql = "gender='$gendernew', bday='$bdaynew'";
$memberfieldsql = "nickname='$nicknamenew', site='$sitenew', location='$locationnew', icq='$icqnew', qq='$qqnew', yahoo='$yahoonew', msn='$msnnew', taobao='$taobaonew', alipay='$alipaynew' $cstatusadd";
} elseif($typeid == 3 && ($_DCACHE['fields_required'] || $_DCACHE['fields_optional'])) {
$fieldadd = array();
foreach(array_merge($_DCACHE['fields_required'], $_DCACHE['fields_optional']) as $field) {
$field_key = 'field_'.$field['fieldid'];
$field_val = trim(${'field_'.$field['fieldid'].'new'});
if($field['required'] && $field_val == '' && !($field['unchangeable'] && $member[$field_key])) {
showmessage('profile_required_info_invalid');
} elseif($field['selective'] && $field_val != '' && !isset($field['choices'][$field_val])) {
showmessage('undefined_action', NULL, 'HALTED');
} elseif(!$field['unchangeable'] || !$member[$field_key]) {
$fieldadd[] = "$field_key='".dhtmlspecialchars($field_val)."'";
}
}
$memberfieldsql = implode(', ', $fieldadd);
} elseif($typeid == 4) {
if($maxsigsize) {
if(strlen($signaturenew) > $maxsigsize) {
showmessage('profile_sig_toolong');
}
} else {
$signaturenew = '';
}
$signaturenew = censor($signaturenew);
$sigstatusnew = $signaturenew ? 1 : 0;
$bionew = censor(dhtmlspecialchars($bionew));
$sightmlnew = addslashes(discuzcode(stripslashes($signaturenew), 1, 0, 0, 0, $allowsigbbcode, $allowsigimgcode, 0, 0, 1));
$biohtmlnew = addslashes(discuzcode(stripslashes($bionew), 1, 0, 0, 0, $allowbiobbcode, $allowbioimgcode, 0, 0, 1));
$biohtmlnew .= "\t\t\t".addslashes(discuzcode(stripslashes($biotradenew), 1, 0, 0, 0, 1, 1, 0, 0, 1));
$membersql = "sigstatus='$sigstatusnew'";
$memberfieldsql = "bio='$biohtmlnew', sightml='$sightmlnew'";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -