false, 'message' => '仅支持 POST 请求' ]); exit(); } // 获取原始输入 $input = file_get_contents('php://input'); if (empty($input)) { http_response_code(400); echo json_encode([ 'success' => false, 'message' => '请求数据为空' ]); exit(); } // 解析 JSON 数据 $data = json_decode($input, true); if (json_last_error() !== JSON_ERROR_NONE) { http_response_code(400); echo json_encode([ 'success' => false, 'message' => 'JSON 解析失败: ' . json_last_error_msg() ]); exit(); } // 验证必要字段 $requiredFields = ['user_id', 'user_type', 'username']; $missingFields = []; foreach ($requiredFields as $field) { if (!isset($data[$field]) || empty($data[$field])) { $missingFields[] = $field; } } if (!empty($missingFields)) { http_response_code(400); echo json_encode([ 'success' => false, 'message' => '缺少必要字段: ' . implode(', ', $missingFields) ]); exit(); } // 验证 user_type 是否合法 $validUserTypes = ['student', 'parent', 'admin']; if (!in_array($data['user_type'], $validUserTypes)) { http_response_code(400); echo json_encode([ 'success' => false, 'message' => '无效的用户类型' ]); exit(); } // 设置 Session 变量 $_SESSION['user_id'] = $data['user_id']; $_SESSION['user_type'] = $data['user_type']; $_SESSION['username'] = $data['username']; $_SESSION['real_name'] = $data['real_name'] ?? ''; $_SESSION['role'] = $data['role'] ?? ''; $_SESSION['login_time'] = time(); // 如果是学生,额外设置 student_id if ($data['user_type'] === 'student') { if (empty($data['student_id'])) { http_response_code(400); echo json_encode([ 'success' => false, 'message' => '学生类型必须提供 student_id' ]); exit(); } $_SESSION['student_id'] = $data['student_id']; } // 保存 Session session_write_close(); // 返回成功响应 http_response_code(200); echo json_encode([ 'success' => true, 'message' => 'Session 保存成功' ]); exit();