Загрузка данных


<?php
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Content-Type, Authorization');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    exit(0);
}

// 1. Подключение к базе данных
$host = 'web.edu';
$db   = '23095_testapi';
$user = 'твой_логин';
$pass = 'твой_пароль';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
try {
    $pdo = new PDO($dsn, $user, $pass, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]);
} catch (\PDOException $e) {
    http_response_code(500);
    echo json_encode(['error' => 'Ошибка подключения к БД: ' . $e->getMessage()]);
    exit;
}

// 2. Проверка токена авторизации
$auth = $_SERVER['HTTP_AUTHORIZATION'] ?? '';
if ($auth !== 'Bearer secret-token-123') {
    http_response_code(401);
    echo json_encode(['error' => 'Unauthorized: Неверный токен']);
    exit;
}

// 3. Обработка POST-запроса (Создание пользователя)
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Читаем JSON из тела запроса
    $input = json_decode(file_get_contents('php://input'), true);
    
    $name = trim($input['name'] ?? '');
    $email = trim($input['email'] ?? '');
    $age = $input['age'] ?? null;

    // Простая валидация
    if (empty($name)) {
        http_response_code(400);
        echo json_encode(['error' => 'Имя не может быть пустым']);
        exit;
    }

    // Запись в базу данных (используем твое поле idusers)
    $stmt = $pdo->prepare("INSERT INTO users (name, email, age) VALUES (?, ?, ?)");
    $stmt->execute([$name, $email, $age]);
    $newId = $pdo->lastInsertId();

    // Достаем созданную запись, чтобы вернуть её клиенту
    $stmt = $pdo->prepare("SELECT * FROM users WHERE idusers = ?");
    $stmt->execute([$newId]);
    
    http_response_code(201);
    echo json_encode($stmt->fetch(), JSON_UNESCAPED_UNICODE);
    exit;
}

// Если это другой метод — пока говорим, что он не поддерживается
http_response_code(404);
echo json_encode(['error' => 'Метод не найден']);