admin/profile.php
(开头部分) 10KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
require_once __DIR__ . '/../core/Session.php';
require_once __DIR__ . '/../core/Security.php';
require_once __DIR__ . '/../core/Logger.php';
require_once __DIR__ . '/../app/models/User.php';
Session::start();
Session::requireLogin();
$user = Session::getUser();
$userModel = new User();
$error = '';
$success = Session::getFlash('success');
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$action = $_POST['action'] ?? '';
$csrfToken = $_POST['csrf_token'] ?? '';
if (!Security::verifyCSRFToken($csrfToken)) {
$error = '安全验证失败';
} else {
switch ($action) {
case 'update_profile':
$nickname = trim($_POST['nickname'] ?? '');
$email = trim($_POST['email'] ?? '');
if (empty($email)) {
$error = '邮箱不能为空';
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error = '邮箱格式不正确';
} else {
$data = [
'nickname' => $nickname,
'email' => $email
];
if ($userModel->update($user['id'], $data)) {
Session::setUser(array_merge($user, $data));
Logger::userAction('profile_update', '更新个人资料');
Session::setFlash('success', '资料更新成功');
header('Location: profile.php');
exit;
} else {
$error = '更新失败';
}
}
break;
case 'change_password':
$oldPassword = $_POST['old_password'] ?? '';
$newPassword = $_POST['new_password'] ?? '';
$confirmPassword = $_POST['confirm_password'] ?? '';
if (empty($oldPassword) || empty($newPassword) || empty($confirmPassword)) {
$error = '请填写所有密码字段';
} elseif (strlen($newPassword) < 6) {
$error = '新密码至少6个字符';
} elseif ($newPassword !== $confirmPassword) {
$error = '两次输入的密码不一致';
后面还有 187 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。
