File Manager V1.5

[SYSTEM@ROOT]: /var/www/html/
INJECT_FILE:
NEW_ENTRY:

FILE_CONTENT: get_user_info.php

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

ob_start();

require_once 'db.php';

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, PATCH, OPTIONS");
header("Access-Control-Allow-Headers: Authorization, Content-Type, Accept, X-Requested-With, User-Agent, Origin");
header("Access-Control-Max-Age: 86400");
header("Content-Type: application/json; charset=UTF-8");

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

function sendResponse($success, $message = '', $data = null, $code = 200) {
    global $debugInfo;
    if (ob_get_length()) ob_clean();
    
    $response = [
        'success' => $success,
        'message' => $message,
        'data' => $data,
        'timestamp' => time()
    ];
    if (!empty($debugInfo)) {
        $response['debug'] = $debugInfo;
    }
    
    http_response_code($code);
    echo json_encode($response);
    exit;
}

function get_info($userId, $pdo) {
    try {
        $stmt = $pdo->prepare("SELECT *, 'individusers' as user_type FROM individusers WHERE id = ?");
        $stmt->execute([$userId]);
        $user = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if ($user) {
            unset($user['password']);
            return ['success' => true, 'message' => '', 'data' => $user];
        }
        
        $stmt = $pdo->prepare("SELECT *, 'companyusers' as user_type FROM companyusers WHERE id = ?");
        $stmt->execute([$userId]);
        $user = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if ($user) {
            unset($user['password']);
            return ['success' => true, 'message' => '', 'data' => $user];
        }
        
        $stmt = $pdo->prepare("SELECT *, 'leasingmanagers' as user_type FROM leasingmanagers WHERE id = ?");
        $stmt->execute([$userId]);
        $user = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if ($user) {
            unset($user['password']);
            return ['success' => true, 'message' => '', 'data' => $user];
        }
        
        return ['success' => false, 'message' => 'Пользователь не найден', 'data' => null];
        
    } catch (PDOException $e) {
        return ['success' => false, 'message' => 'Ошибка базы данных: ' . $e->getMessage(), 'data' => null];
    }
}

$debugInfo = [];

try {
    // Используем универсальную функцию для получения токена
    $token = getAuthToken();
    
    if (!$token) {
        $debugInfo[] = 'Authorization header missing';
        $debugInfo[] = 'Available headers: ' . json_encode(getallheaders());
        sendResponse(false, 'Требуется авторизация', null, 401);
    }
    
    $debugInfo[] = "Token received: $token";
    $decoded = verifyToken($token);
    
    if (!$decoded) {
        $debugInfo[] = 'Token verification failed';
        sendResponse(false, 'Неверный токен', null, 401);
    }
    $debugInfo[] = 'Token decoded: ' . json_encode($decoded);

    if (!isset($_GET['id']) || !ctype_digit($_GET['id'])) {
        $debugInfo[] = 'Invalid ID parameter: ' . ($_GET['id'] ?? 'not set');
        sendResponse(false, 'Неверный ID пользователя', null, 400);
    }

    $userId = (int)$_GET['id'];
    $debugInfo[] = "Requested user ID: $userId";

    $pdo = getPDO();
    if (!$pdo) {
        $debugInfo[] = 'Database connection failed';
        sendResponse(false, 'Ошибка подключения к БД', null, 500);
    }
    $debugInfo[] = 'Database connection established';

    $result = get_info($userId, $pdo);
    
    sendResponse($result['success'], $result['message'], $result['data'], 
        $result['success'] ? 200 : ($result['message'] === 'Пользователь не найден' ? 404 : 500));

} catch (PDOException $e) {
    $debugInfo[] = 'PDO Exception: ' . $e->getMessage();
    sendResponse(false, 'Ошибка базы данных: ' . $e->getMessage(), null, 500);
} catch (Exception $e) {
    $debugInfo[] = 'General Exception: ' . $e->getMessage();
    sendResponse(false, 'Ошибка сервера: ' . $e->getMessage(), null, 500);
} finally {
    if (ob_get_length()) ob_end_clean();
}
?>
[ KEMBALI ]