false, 'message' => 'No se proporcionó un identificador de producto.']; $pdo = db(); $product = null; // Universal search: treat any incoming ID as a potential SKU. $sku = ''; if (isset($_GET['codigo_barras'])) { $sku = trim($_GET['codigo_barras']); } elseif (isset($_GET['sku'])) { $sku = trim($_GET['sku']); } elseif (isset($_GET['id'])) { $sku = trim($_GET['id']); } if (!empty($sku)) { try { // Search by the 'sku' column $stmt = $pdo->prepare("SELECT id, nombre, sku FROM products WHERE sku = :sku"); $stmt->execute(['sku' => $sku]); $product = $stmt->fetch(PDO::FETCH_ASSOC); if (!$product) { $response['message'] = 'Producto no encontrado con el SKU proporcionado: ' . htmlspecialchars($sku); // Log the failed SKU attempt to a file $log_message = date('[Y-m-d H:i:s]') . " Intento fallido de búsqueda con SKU: " . $sku . PHP_EOL; file_put_contents('sku_failures.log', $log_message, FILE_APPEND); } } catch (PDOException $e) { // Don't expose detailed SQL errors to the client error_log('Database Error: ' . $e->getMessage()); $response['message'] = 'Error al consultar la base de datos.'; } } else { $response['message'] = 'El SKU/código de barras no puede estar vacío.'; } if ($product) { $response = ['success' => true, 'product' => $product]; } echo json_encode($response); ?>