45 lines
1.5 KiB
PHP
45 lines
1.5 KiB
PHP
<?php
|
|
header('Content-Type: application/json');
|
|
require_once 'db/config.php';
|
|
|
|
$response = ['success' => 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);
|
|
?>
|