Cambios en formulario de registro de usuarios
This commit is contained in:
@@ -23,7 +23,7 @@ if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||||
|
||||
// Configuración de la API Laravel
|
||||
$API_CONFIG = [
|
||||
'base_url' => $ruta.'/stripe', // Cambiar por tu URL de Laravel
|
||||
'base_url' => $ruta.'/api', // Cambiar por tu URL de Laravel
|
||||
'endpoint' => '/regUsuario', // Tu endpoint de Laravel
|
||||
'timeout' => 30, // Timeout en segundos
|
||||
'auth_token' => '', // Token de autenticación si es necesario
|
||||
@@ -78,7 +78,7 @@ try {
|
||||
http_response_code(500);
|
||||
echo json_encode([
|
||||
'success' => false,
|
||||
'message' => 'Error interno del servidor. Por favor intente nuevamente.'
|
||||
'message' => 'Error interno del servidor. Por favor intente nuevamente.'.$e->getMessage()
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -98,7 +98,8 @@ function validateAndProcessForm() {
|
||||
'usuario' => 'Nombre de Usuario',
|
||||
'email' => 'Correo Electrónico',
|
||||
'clavePublica' => 'Clave Pública',
|
||||
'clavePrivada' => 'Clave Privada'
|
||||
'clavePrivada' => 'Clave Privada',
|
||||
'colorValue' => 'Color de Branding'
|
||||
];
|
||||
|
||||
// Validar campos requeridos
|
||||
@@ -133,10 +134,15 @@ function validateAndProcessForm() {
|
||||
'email' => strtolower(trim($_POST['email'])),
|
||||
'platf_pago' => !empty($_POST['platf_pago']) ? $_POST['platf_pago'] : 'stripe',
|
||||
'clavePublica' => formatKey($_POST['clavePublica']),
|
||||
'clavePrivada' => formatKey($_POST['clavePrivada'])
|
||||
'clavePrivada' => formatKey($_POST['clavePrivada']),
|
||||
'colorBrand' => formatKey($_POST['colorValue']),
|
||||
];
|
||||
|
||||
|
||||
|
||||
// Procesar logo si se envió
|
||||
if (isset($_FILES['logo']) && isset($_FILES['logo']['error']) && $_FILES['logo']['error'] !== UPLOAD_ERR_NO_FILE) {
|
||||
// processLogo validará el archivo y devolverá la info necesaria
|
||||
$formData['logo'] = processLogo($_FILES['logo']);
|
||||
}
|
||||
|
||||
return $formData;
|
||||
}
|
||||
@@ -149,15 +155,43 @@ function sendToLaravelAPI($formData, $config) {
|
||||
|
||||
// Inicializar cURL
|
||||
$ch = curl_init();
|
||||
|
||||
// Preparar datos para envío
|
||||
$postData = [];
|
||||
|
||||
// Preparar campos para envío multipart/form-data
|
||||
$postFields = [];
|
||||
foreach ($formData as $key => $value) {
|
||||
if ($key === 'logo' && is_array($value) && isset($value['tmp_name'])) {
|
||||
// Verificar que el archivo existe y es legible
|
||||
if (!is_readable($value['tmp_name'])) {
|
||||
throw new Exception('No se puede leer el archivo de logo');
|
||||
}
|
||||
// Crear CURLFile para enviar el archivo
|
||||
$postFields['logo'] = new CURLFile(
|
||||
$value['tmp_name'],
|
||||
$value['type'],
|
||||
$value['name']
|
||||
);
|
||||
// Agregar información adicional del archivo
|
||||
$postFields['logo_name'] = $value['name'];
|
||||
$postFields['logo_type'] = $value['type'];
|
||||
} else {
|
||||
$postFields[$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
// Cabeceras - NO establecer 'Content-Type: multipart/form-data' manualmente
|
||||
// cURL añadirá la cabecera Content-Type con el boundary correcto cuando se use CURLFile
|
||||
$headers = [
|
||||
'Accept: application/json',
|
||||
'X-Requested-With: XMLHttpRequest'
|
||||
];
|
||||
if (!empty($config['auth_token'])) {
|
||||
$headers[] = 'Authorization: Bearer ' . $config['auth_token'];
|
||||
}
|
||||
|
||||
// Configurar cURL
|
||||
curl_setopt_array($ch, [
|
||||
CURLOPT_URL => $url,
|
||||
CURLOPT_POST => true,
|
||||
CURLOPT_POSTFIELDS => $formData,
|
||||
CURLOPT_POSTFIELDS => $postFields,
|
||||
CURLOPT_RETURNTRANSFER => true,
|
||||
CURLOPT_TIMEOUT => $config['timeout'],
|
||||
CURLOPT_CONNECTTIMEOUT => 10,
|
||||
@@ -165,20 +199,24 @@ function sendToLaravelAPI($formData, $config) {
|
||||
CURLOPT_MAXREDIRS => 3,
|
||||
CURLOPT_SSL_VERIFYPEER => false, // Solo para desarrollo
|
||||
CURLOPT_USERAGENT => 'PHP-FormProcessor/1.0',
|
||||
CURLOPT_HTTPHEADER => [
|
||||
'Accept: application/json',
|
||||
'X-Requested-With: XMLHttpRequest'
|
||||
]
|
||||
CURLOPT_HTTPHEADER => $headers
|
||||
]);
|
||||
|
||||
// Agregar token de autenticación si existe
|
||||
if (!empty($config['auth_token'])) {
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array_merge(
|
||||
curl_getopt($ch, CURLOPT_HTTPHEADER),
|
||||
['Authorization: Bearer ' . $config['auth_token']]
|
||||
));
|
||||
// Log de depuración: claves y estado del archivo (no logeamos contenido binario)
|
||||
logActivity('debug', 'Preparando campos para enviar a API', [
|
||||
'url' => $url,
|
||||
'post_keys' => array_keys($postFields)
|
||||
]);
|
||||
if (isset($postFields['logo']) && isset($formData['logo'])) {
|
||||
$tmp = $formData['logo']['tmp_name'] ?? null;
|
||||
logActivity('debug', 'Estado logo antes de cURL', [
|
||||
'tmp_name' => $tmp,
|
||||
'exists' => $tmp ? file_exists($tmp) : false,
|
||||
'readable' => $tmp ? is_readable($tmp) : false,
|
||||
'size' => $formData['logo']['size'] ?? null,
|
||||
'error' => $formData['logo']['error'] ?? null
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
// Ejecutar petición
|
||||
$response = curl_exec($ch);
|
||||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
@@ -191,6 +229,8 @@ function sendToLaravelAPI($formData, $config) {
|
||||
throw new Exception("Error de conexión con la API: $error");
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Decodificar respuesta JSON
|
||||
$decodedResponse = json_decode($response, true);
|
||||
|
||||
@@ -259,11 +299,22 @@ function processLogo($logoFile) {
|
||||
throw new ValidationException(['logo' => ['El logo no puede ser mayor a 2MB']]);
|
||||
}
|
||||
|
||||
// Verificar que el archivo se subió correctamente
|
||||
if (!is_uploaded_file($logoFile['tmp_name'])) {
|
||||
throw new ValidationException(['logo' => ['Error al subir el archivo']]);
|
||||
}
|
||||
|
||||
// Verificar que podemos leer el archivo
|
||||
if (!is_readable($logoFile['tmp_name'])) {
|
||||
throw new ValidationException(['logo' => ['No se puede leer el archivo subido']]);
|
||||
}
|
||||
|
||||
return [
|
||||
'name' => $logoFile['name'],
|
||||
'type' => $logoFile['type'],
|
||||
'tmp_name' => $logoFile['tmp_name'],
|
||||
'size' => $logoFile['size']
|
||||
'size' => $logoFile['size'],
|
||||
'error' => $logoFile['error']
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user