prepare('SELECT id, username, email, nickname, verified, is_admin, status, avatar FROM ' . tn('users') . ' WHERE id = ?'); $stmt->execute([$_SESSION['user_id']]); $user = $stmt->fetch(); $msg = ''; $msgOk = false; if ($_SERVER['REQUEST_METHOD'] === 'POST') { verifyCsrf(); $u = trim($_POST['username'] ?? ''); $em = trim($_POST['email'] ?? ''); $nk = trim($_POST['nickname'] ?? ''); if (mb_strlen($u) < 3) $msg = __('settings_page.err_username_short'); elseif (!filter_var($em, FILTER_VALIDATE_EMAIL)) $msg = __('settings_page.err_email_invalid'); elseif ($nk !== '' && mb_strlen($nk) > 30) $msg = __('settings_page.err_nickname_long'); if ($msg === '') { $chk = db()->prepare('SELECT id FROM ' . tn('users') . ' WHERE username = ? AND id <> ?'); $chk->execute([$u, $user['id']]); if ($chk->fetch()) { $msg = __('settings_page.err_username_taken'); } else { $emailChanged = ($em !== $user['email']); db()->prepare('UPDATE ' . tn('users') . ' SET username = ?, email = ?, nickname = ? WHERE id = ?') ->execute([$u, $em, $nk, $user['id']]); // 更换邮箱则取消验证状态,要求重新验证 if ($emailChanged && !empty($user['verified'])) { db()->prepare('UPDATE ' . tn('users') . ' SET verified = 0 WHERE id = ?') ->execute([$user['id']]); } // 重新读取最新资料 $stmt->execute([$user['id']]); $user = $stmt->fetch(); $msg = $emailChanged ? __('settings_page.saved_email_change') : __('settings_page.saved'); $msgOk = true; } } } require 'includes/header.php'; ?>

' . __('settings_page.verify_send_link') . '', __('settings_page.verify_not_done')) ?>