up
This commit is contained in:
@@ -0,0 +1,282 @@
|
||||
<?php
|
||||
/**
|
||||
* Instalador Ultra Básico - Paso a Paso
|
||||
* Para resolver problemas de creación de tablas
|
||||
* Desarrollado por U-Site.app
|
||||
* Fecha: 14 de noviembre de 2025
|
||||
*/
|
||||
|
||||
error_reporting(E_ALL);
|
||||
ini_set('display_errors', 1);
|
||||
|
||||
if (file_exists('.installation_completed')) {
|
||||
header('Location: login.php');
|
||||
exit('Sistema ya instalado');
|
||||
}
|
||||
|
||||
$step = $_GET['step'] ?? 'form';
|
||||
$errors = [];
|
||||
$success = [];
|
||||
$adminPassword = bin2hex(random_bytes(6)); // 12 caracteres
|
||||
|
||||
if ($step === 'install' && $_POST) {
|
||||
$dbHost = trim($_POST['db_host'] ?? 'localhost');
|
||||
$dbPort = trim($_POST['db_port'] ?? '3306');
|
||||
$dbName = trim($_POST['db_name'] ?? '');
|
||||
$dbUser = trim($_POST['db_user'] ?? '');
|
||||
$dbPass = $_POST['db_pass'] ?? '';
|
||||
|
||||
if (empty($dbName)) $errors[] = "BD requerida";
|
||||
if (empty($dbUser)) $errors[] = "Usuario requerido";
|
||||
if (empty($dbPass)) $errors[] = "Contraseña requerida";
|
||||
|
||||
if (empty($errors)) {
|
||||
try {
|
||||
$dsn = "mysql:host={$dbHost};port={$dbPort};dbname={$dbName};charset=utf8mb4";
|
||||
$pdo = new PDO($dsn, $dbUser, $dbPass, [
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
|
||||
]);
|
||||
$success[] = "✅ Conectado a '{$dbName}'";
|
||||
|
||||
// Crear tabla users primero
|
||||
$sql = "CREATE TABLE IF NOT EXISTS users (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
phone_number VARCHAR(20) UNIQUE NOT NULL,
|
||||
name VARCHAR(100),
|
||||
status ENUM('active', 'inactive') DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
)";
|
||||
|
||||
$pdo->exec($sql);
|
||||
|
||||
// Verificar que se creó
|
||||
try {
|
||||
$result = $pdo->query("SELECT COUNT(*) FROM users");
|
||||
$success[] = "✅ Tabla 'users' creada y funcional";
|
||||
} catch (Exception $e) {
|
||||
$errors[] = "❌ Tabla users no funciona: " . $e->getMessage();
|
||||
}
|
||||
|
||||
// Crear tabla system_config
|
||||
$sql = "CREATE TABLE IF NOT EXISTS system_config (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
config_key VARCHAR(100) UNIQUE NOT NULL,
|
||||
config_value TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
)";
|
||||
|
||||
$pdo->exec($sql);
|
||||
|
||||
// Verificar
|
||||
try {
|
||||
$result = $pdo->query("SELECT COUNT(*) FROM system_config");
|
||||
$success[] = "✅ Tabla 'system_config' creada y funcional";
|
||||
} catch (Exception $e) {
|
||||
$errors[] = "❌ Tabla system_config no funciona: " . $e->getMessage();
|
||||
}
|
||||
|
||||
// Solo insertar datos si no hay errores
|
||||
if (empty($errors)) {
|
||||
// Insertar configuración básica
|
||||
$configSql = "INSERT IGNORE INTO system_config (config_key, config_value) VALUES
|
||||
('app_installed', '1'),
|
||||
('install_date', NOW()),
|
||||
('business_name', 'Mi Empresa'),
|
||||
('admin_user', 'admin')";
|
||||
|
||||
try {
|
||||
$pdo->exec($configSql);
|
||||
$success[] = "✅ Configuración inicial insertada";
|
||||
} catch (Exception $e) {
|
||||
$errors[] = "⚠️ Error insertando config: " . $e->getMessage();
|
||||
}
|
||||
|
||||
// Actualizar config.php
|
||||
if (file_exists('config/config.php')) {
|
||||
$config = file_get_contents('config/config.php');
|
||||
|
||||
$config = preg_replace("/define\('DB_HOST',\s*'[^']*'\);/", "define('DB_HOST', '$dbHost');", $config);
|
||||
$config = preg_replace("/define\('DB_PORT',\s*'[^']*'\);/", "define('DB_PORT', '$dbPort');", $config);
|
||||
$config = preg_replace("/define\('DB_NAME',\s*'[^']*'\);/", "define('DB_NAME', '$dbName');", $config);
|
||||
$config = preg_replace("/define\('DB_USER',\s*'[^']*'\);/", "define('DB_USER', '$dbUser');", $config);
|
||||
$config = preg_replace("/define\('DB_PASS',\s*'[^']*'\);/", "define('DB_PASS', '$dbPass');", $config);
|
||||
$config = preg_replace("/define\('ADMIN_PASSWORD',\s*'[^']*'\);/", "define('ADMIN_PASSWORD', '" . password_hash($adminPassword, PASSWORD_DEFAULT) . "');", $config);
|
||||
|
||||
file_put_contents('config/config.php', $config);
|
||||
$success[] = "✅ config.php actualizado";
|
||||
}
|
||||
|
||||
// Verificar que todo funciona
|
||||
try {
|
||||
$userCount = $pdo->query("SELECT COUNT(*) FROM users")->fetchColumn();
|
||||
$configCount = $pdo->query("SELECT COUNT(*) FROM system_config")->fetchColumn();
|
||||
$success[] = "✅ Verificación final: {$userCount} usuarios, {$configCount} configs";
|
||||
|
||||
// Marcar como instalado
|
||||
file_put_contents('.installation_completed', date('Y-m-d H:i:s'));
|
||||
file_put_contents('CREDENCIALES_BASICO.txt', "USUARIO: admin\nCONTRASEÑA: {$adminPassword}\nFECHA: " . date('Y-m-d H:i:s'));
|
||||
|
||||
$success[] = "🎉 Instalación básica completada";
|
||||
$step = 'completed';
|
||||
|
||||
} catch (Exception $e) {
|
||||
$errors[] = "❌ Error en verificación final: " . $e->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
} catch (PDOException $e) {
|
||||
$errors[] = "❌ Error de conexión: " . $e->getMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>⚡ Instalador Ultra Básico</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body { background: linear-gradient(45deg, #667eea, #764ba2); min-height: 100vh; }
|
||||
.card { background: rgba(255,255,255,0.95); border-radius: 15px; box-shadow: 0 10px 30px rgba(0,0,0,0.3); }
|
||||
</style>
|
||||
</head>
|
||||
<body class="d-flex align-items-center">
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-8">
|
||||
<div class="card p-4">
|
||||
|
||||
<?php if ($step === 'form'): ?>
|
||||
<div class="text-center mb-4">
|
||||
<h2>⚡ Instalador Ultra Básico</h2>
|
||||
<p class="text-muted">Solo crea las tablas esenciales paso a paso</p>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<h6><i class="fas fa-info-circle me-2"></i>Este instalador:</h6>
|
||||
<ul class="mb-0">
|
||||
<li>✅ Crea solo 2 tablas esenciales: <code>users</code> y <code>system_config</code></li>
|
||||
<li>✅ Verifica cada paso antes de continuar</li>
|
||||
<li>✅ Proceso ultra simplificado</li>
|
||||
<li>✅ Ideal para resolver problemas de creación de tablas</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<form method="POST" action="?step=install">
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Host</label>
|
||||
<input type="text" class="form-control" name="db_host" value="localhost" required>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Puerto</label>
|
||||
<input type="text" class="form-control" name="db_port" value="3306" required>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Base de datos</label>
|
||||
<input type="text" class="form-control" name="db_name" placeholder="usite_whatsapp_bot" required>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Usuario</label>
|
||||
<input type="text" class="form-control" name="db_user" required>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label class="form-label">Contraseña</label>
|
||||
<input type="password" class="form-control" name="db_pass" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-center mt-4">
|
||||
<div class="alert alert-success">
|
||||
<strong>Contraseña de admin que se generará:</strong><br>
|
||||
<code><?= $adminPassword ?></code>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary btn-lg">
|
||||
⚡ Instalación Ultra Básica
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<?php elseif ($step === 'install'): ?>
|
||||
<div class="text-center mb-4">
|
||||
<h2>⚙️ Instalando paso a paso...</h2>
|
||||
</div>
|
||||
|
||||
<?php if (!empty($errors)): ?>
|
||||
<div class="alert alert-danger">
|
||||
<h5>❌ Errores:</h5>
|
||||
<?php foreach ($errors as $error): ?>
|
||||
<div><?= htmlspecialchars($error) ?></div>
|
||||
<?php endforeach; ?>
|
||||
<hr>
|
||||
<a href="?step=form" class="btn btn-outline-danger">Reintentar</a>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!empty($success)): ?>
|
||||
<div class="alert alert-success">
|
||||
<h5>✅ Progreso:</h5>
|
||||
<?php foreach ($success as $msg): ?>
|
||||
<div><?= htmlspecialchars($msg) ?></div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($step !== 'completed' && !empty($errors)): ?>
|
||||
<div class="alert alert-warning">
|
||||
<h6>💡 Sugerencias para resolver errores:</h6>
|
||||
<ul class="mb-0">
|
||||
<li>Verifica que la base de datos existe</li>
|
||||
<li>Confirma que el usuario tiene permisos ALL en la BD</li>
|
||||
<li>Prueba conectarte manualmente con phpMyAdmin</li>
|
||||
<li>Si persiste, contacta soporte con estos mensajes</li>
|
||||
</ul>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php elseif ($step === 'completed'): ?>
|
||||
<div class="text-center mb-4">
|
||||
<h2 class="text-success">🎉 ¡Instalación Básica Exitosa!</h2>
|
||||
<p class="text-muted">Sistema mínimo funcional instalado</p>
|
||||
</div>
|
||||
|
||||
<div class="row g-4">
|
||||
<div class="col-md-6">
|
||||
<h5>🔑 Credenciales</h5>
|
||||
<div class="alert alert-success">
|
||||
<strong>Usuario:</strong> admin<br>
|
||||
<strong>Contraseña:</strong> <code><?= $adminPassword ?></code><br>
|
||||
<small>Guardadas en: CREDENCIALES_BASICO.txt</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h5>🚀 Siguiente</h5>
|
||||
<div class="d-grid gap-2">
|
||||
<a href="test.php" class="btn btn-success">Probar Sistema</a>
|
||||
<a href="index.php" class="btn btn-primary">Panel Admin</a>
|
||||
<a href="login.php" class="btn btn-outline-info">Login</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info mt-4">
|
||||
<h6>📋 Lo que se instaló:</h6>
|
||||
<ul class="mb-0">
|
||||
<li>✅ Tabla <code>users</code> - Para gestión de usuarios</li>
|
||||
<li>✅ Tabla <code>system_config</code> - Para configuración</li>
|
||||
<li>✅ Configuración básica del sistema</li>
|
||||
<li>✅ Credenciales de administrador</li>
|
||||
</ul>
|
||||
<hr>
|
||||
<small><strong>Nota:</strong> Puedes agregar más funcionalidades desde el panel de administración.</small>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user