| 1 |
<? |
<? |
| 2 |
require_once "../lib/db_open.inc.php"; |
require_once "../lib/db_open.inc.php"; |
| 3 |
require_once "./session_init.inc.php"; |
require_once "./session_init.inc.php"; |
| 4 |
|
require_once "./theme.inc.php"; |
| 5 |
|
|
| 6 |
force_login(); |
force_login(); |
| 7 |
?> |
|
| 8 |
<? |
$result_set = array( |
| 9 |
|
"return" => array( |
| 10 |
|
"code" => 0, |
| 11 |
|
"message" => "", |
| 12 |
|
"errorFields" => array(), |
| 13 |
|
) |
| 14 |
|
); |
| 15 |
|
|
| 16 |
$sql = "SELECT nickname, name, email, gender, gender_pub, birthday, qq |
$sql = "SELECT nickname, name, email, gender, gender_pub, birthday, qq |
| 17 |
FROM user_reginfo INNER JOIN user_pubinfo ON user_reginfo.UID = user_pubinfo.UID |
FROM user_reginfo INNER JOIN user_pubinfo ON user_reginfo.UID = user_pubinfo.UID |
| 18 |
WHERE user_reginfo.UID = ". $_SESSION["BBS_uid"]; |
WHERE user_reginfo.UID = ". $_SESSION["BBS_uid"]; |
| 20 |
$rs = mysqli_query($db_conn, $sql); |
$rs = mysqli_query($db_conn, $sql); |
| 21 |
if ($rs == false) |
if ($rs == false) |
| 22 |
{ |
{ |
| 23 |
echo "Query user info error: " . mysqli_error($db_conn);; |
$result_set["return"]["code"] = -2; |
| 24 |
exit(); |
$result_set["return"]["message"] = "Query user info error: " . mysqli_error($db_conn); |
| 25 |
|
|
| 26 |
|
mysqli_close($db_conn); |
| 27 |
|
exit(json_encode($result_set)); |
| 28 |
} |
} |
| 29 |
|
|
| 30 |
if(!($row = mysql_fetch_array($rs))) |
if($row = mysqli_fetch_array($rs)) |
| 31 |
{ |
{ |
| 32 |
echo ("个人资料不存在!"); |
$result_set["data"] = array( |
| 33 |
exit(); |
"nickname" => $row["nickname"], |
| 34 |
} |
"nicknames" => array(), |
| 35 |
?> |
"name" => $row["name"], |
| 36 |
<html> |
"gender" => $row["gender"], |
| 37 |
<head> |
"gender_pub" => $row["gender_pub"], |
| 38 |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
"email" => $row["email"], |
| 39 |
<title>更改用户资料</title> |
"birthday" => $row["birthday"], |
| 40 |
<link rel="stylesheet" href="css/default.css" type="text/css"> |
"qq" => $row["qq"], |
| 41 |
<script language="JavaScript" src="/js/nw_open.js"></script> |
); |
| 42 |
<script src="../js/polyfill.min.js"></script> |
} |
| 43 |
<script src="../js/axios.min.js"></script> |
else |
|
<script type="text/javascript"> |
|
|
function refresh_err_msg(errorFieldMap) |
|
|
{ |
|
|
document.getElementsByName("err_msg").forEach(element => { |
|
|
if (errorFieldMap.has(element.id)) |
|
|
{ |
|
|
element.innerHTML = errorFieldMap.get(element.id); |
|
|
} |
|
|
else |
|
|
{ |
|
|
element.innerHTML = ""; |
|
|
} |
|
|
}); |
|
|
} |
|
|
|
|
|
function update_profile(f) |
|
|
{ |
|
|
instance.post('update_profile_service.php', { |
|
|
realname: f.realname.value, |
|
|
gender: f.gender.value, |
|
|
gender_public: (f.gender_public.checked ? "1" : "0"), |
|
|
email: f.email.value, |
|
|
year: f.year.value, |
|
|
month: f.month.value, |
|
|
day: f.day.value, |
|
|
qq: f.qq.value, |
|
|
}) |
|
|
.then(function (response) { |
|
|
var ret = response.data; |
|
|
var errorFieldMap = new Map(); |
|
|
switch (ret.return.code) |
|
|
{ |
|
|
case 0: // OK |
|
|
errorFieldMap.set("err_msg_prompt", "更新成功"); |
|
|
refresh_err_msg(errorFieldMap); |
|
|
break; |
|
|
case -1: // Input validation failed |
|
|
ret.return.errorFields.forEach(field => { |
|
|
errorFieldMap.set("err_msg_" + field.id, field.errMsg + "<br />"); |
|
|
}); |
|
|
refresh_err_msg(errorFieldMap); |
|
|
break; |
|
|
case -2: // Internal error |
|
|
console.log(ret.return.message); |
|
|
errorFieldMap.set("err_msg_prompt", "内部错误"); |
|
|
refresh_err_msg(errorFieldMap); |
|
|
break; |
|
|
default: |
|
|
console.log(ret.return.code); |
|
|
break; |
|
|
} |
|
|
}) |
|
|
.catch(function (error) { |
|
|
console.log(error); |
|
|
}); |
|
|
|
|
|
return false; |
|
|
} |
|
|
|
|
|
const instance = axios.create({ |
|
|
withCredentials: true, |
|
|
timeout: 3000, |
|
|
baseURL: document.location.protocol + '//' + document.location.hostname + (document.location.port=='' ? '' : (':' + document.location.port)) + '/bbs/', |
|
|
}); |
|
|
|
|
|
window.addEventListener("load", () => { |
|
|
var f = document.getElementById("profile_form"); |
|
|
f.addEventListener("submit", (e) => { |
|
|
e.preventDefault(); |
|
|
update_profile(f); |
|
|
}); |
|
|
}); |
|
|
|
|
|
</script> |
|
|
</head> |
|
|
<body> |
|
|
<? |
|
|
include "./member_service_guide.inc.php"; |
|
|
?> |
|
|
<center> |
|
|
<p style="FONT-WEIGHT: bold; FONT-SIZE: 16px; COLOR: red; FONT-FAMILY: 楷体">更改用户资料</p> |
|
|
<p><span id="err_msg_prompt" name="err_msg" style="color: red"></span></p> |
|
|
<form method="post" id="profile_form" name="profile_form" action="#"> |
|
|
<table border="1" cellpadding="10" cellspacing="0" width="90%" bgcolor="#ffdead" id=TABLE1> |
|
|
<tr> |
|
|
<td width="26%" align="right"> |
|
|
密码 |
|
|
</td> |
|
|
<td width="74%"> |
|
|
密码修改请<a href="reset_pass.php" target=_blank>点击此处</a>通过邮箱重置。 |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td align="right"> |
|
|
昵称 |
|
|
</td> |
|
|
<td> |
|
|
<span id="err_msg_nickname" name="err_msg" style="color: red;"></span><input id="nickname" name="nickname" value="<? echo htmlspecialchars($row["nickname"], ENT_HTML401, 'UTF-8'); ?>" readonly> |
|
|
<input type="button" onclick="NW_open('ch_nick.php','ch_nick',250,200);" value="修改昵称"> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td align="right"> |
|
|
姓名 |
|
|
</td> |
|
|
<td> |
|
|
<span id="err_msg_realname" name="err_msg" style="color: red;"></span><input id="realname" name="realname" value="<? echo htmlspecialchars($row["name"], ENT_HTML401, 'UTF-8'); ?>"> |
|
|
<span style="color: red">*</span> |
|
|
长度不超过5个全角字符 |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td align="right"> |
|
|
性别 |
|
|
</td> |
|
|
<td> |
|
|
<span id="err_msg_gender" name="err_msg" style="color: red;"></span><input type="radio" id="gender_male" name="gender" value="M" <? echo ($row["gender"] == "M" ? "checked" : ""); ?>>男 |
|
|
<input type="radio" id="gender_female" name="gender" value="F" <? echo ($row["gender"] == "F" ? "checked" : ""); ?>>女 |
|
|
<span style="color: red">*</span> |
|
|
<input type="checkbox" id="gender_public" name="gender_public" value="1" <? echo ($row["gender_pub"] ? "checked" : ""); ?>>公开 |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td align="right"> |
|
|
邮件地址 |
|
|
</td> |
|
|
<td> |
|
|
<span id="err_msg_email" name="err_msg" style="color: red;"></span><input id="email" name="email" value="<? echo $row["email"]; ?>"> |
|
|
<span style="color: red">*</span> |
|
|
修改邮箱后,请按照确认邮件提示操作<br> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td align="right"> |
|
|
出生日期 |
|
|
</td> |
|
|
<td> |
|
|
<span id="err_msg_birthday" name="err_msg" style="color: red;"></span><select id="year" name="year" size="1"> |
|
|
<? |
|
|
$birthday = (new DateTimeImmutable($row["birthday"])); |
|
|
|
|
|
$year_current = intval(date("Y", time())); |
|
|
$year_max = $year_current - 16; // Accept registrant of 16+ only |
|
|
$year_min = $year_current - 80; |
|
|
$year_selected = intval($birthday->format("Y")); |
|
|
for ($year = $year_min; $year <= $year_max; $year++) |
|
| 44 |
{ |
{ |
| 45 |
?> |
$result_set["return"]["code"] = -1; |
| 46 |
<option value="<? echo $year; ?>" <? echo ($year == $year_selected ? "selected" : ""); ?>><? echo $year; ?></option> |
$result_set["return"]["message"] = "个人资料不存在!"; |
| 47 |
<? |
|
| 48 |
|
mysqli_close($db_conn); |
| 49 |
|
exit(json_encode($result_set)); |
| 50 |
} |
} |
|
?> |
|
| 51 |
|
|
| 52 |
</select>年 |
mysqli_free_result($rs); |
| 53 |
<select id="month" name="month" size="1"> |
|
| 54 |
<? |
$sql = "SELECT DISTINCT nickname FROM user_nickname WHERE UID = " . $_SESSION["BBS_uid"] . |
| 55 |
$month_selected = intval($birthday->format("m")); |
" ORDER BY nickname"; |
| 56 |
for ($month = 1; $month <= 12; $month++) |
|
| 57 |
|
$rs = mysqli_query($db_conn, $sql); |
| 58 |
|
if ($rs == false) |
| 59 |
{ |
{ |
| 60 |
?> |
$result_set["return"]["code"] = -2; |
| 61 |
<option value="<? echo $month; ?>" <? echo ($month == $month_selected ? "selected" : ""); ?>><? echo $month; ?></option> |
$result_set["return"]["message"] = "Query nickname error: " . mysqli_error($db_conn); |
| 62 |
<? |
|
| 63 |
|
mysqli_close($db_conn); |
| 64 |
|
exit(json_encode($result_set)); |
| 65 |
} |
} |
| 66 |
?> |
|
| 67 |
</select>月 |
while ($row = mysqli_fetch_array($rs)) |
|
<select id="day" name="day" size="1"> |
|
|
<? |
|
|
$day_selected = intval($birthday->format("d")); |
|
|
for ($day = 1; $day <= 31; $day++) |
|
| 68 |
{ |
{ |
| 69 |
?> |
array_push($result_set["data"]["nicknames"], $row["nickname"]); |
|
<option value="<? echo $day; ?>" <? echo ($day == $day_selected ? "selected" : ""); ?>><? echo $day; ?></option> |
|
|
<? |
|
| 70 |
} |
} |
|
?> |
|
|
</select>日 |
|
|
<span style="color: red">*</span> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td align="right"> |
|
|
QQ号码 |
|
|
</td> |
|
|
<td> |
|
|
<span id="err_msg_qq" name="err_msg" style="color: red;"></span><input id="qq" name="qq" size="20" value="<? echo $row["qq"]; ?>"> |
|
|
</td> |
|
|
</tr> |
|
|
</table> |
|
|
<p> |
|
|
<input type="submit" value="提交"> |
|
|
<input type="reset" value="重填"> |
|
|
<input type="button" value="关闭窗口" name="B3" onclick="self.close();"></p> |
|
|
</p> |
|
|
</form> |
|
|
</center> |
|
|
</body> |
|
|
</html> |
|
|
<? |
|
| 71 |
mysqli_free_result($rs); |
mysqli_free_result($rs); |
| 72 |
|
|
| 73 |
mysqli_close($db_conn); |
mysqli_close($db_conn); |
| 74 |
|
|
| 75 |
|
// Output with theme view |
| 76 |
|
$theme_view_file = get_theme_file("view/update_profile", $_SESSION["BBS_theme_name"]); |
| 77 |
|
if ($theme_view_file == null) |
| 78 |
|
{ |
| 79 |
|
exit(json_encode($result_set)); // Output data in Json |
| 80 |
|
} |
| 81 |
|
include $theme_view_file; |
| 82 |
?> |
?> |