miércoles, 24 de septiembre de 2025
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Crear tabla si no existe
$db->exec("CREATE TABLE IF NOT EXISTS links (
id INTEGER PRIMARY KEY AUTOINCREMENT,
code TEXT UNIQUE,
url TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
)");
// ----------- CONFIGURACIÓN -----------
// Usuario y contraseña para panel admin
$ADMIN_USER = "admin";
$ADMIN_PASS = "12345";
// ------------------------------------
// Función para generar código
function generarCodigo($longitud = 6) {
return substr(str_shuffle("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"), 0, $longitud);
}
// ------- LOGIN --------
if (isset($_POST['login'])) {
if ($_POST['user'] === $GLOBALS['ADMIN_USER'] && $_POST['pass'] === $GLOBALS['ADMIN_PASS']) {
$_SESSION['admin'] = true;
} else {
$error = "Usuario o contraseña incorrectos.";
}
}
// ------- LOGOUT --------
if (isset($_GET['logout'])) {
session_destroy();
header("Location: index.php");
exit;
}
// ------- CREAR ENLACE -------
if (isset($_POST['url']) && !empty($_POST['url'])) {
$url = trim($_POST['url']);
$code = generarCodigo();
$stmt = $db->prepare("INSERT INTO links (code, url) VALUES (:code, :url)");
$stmt->execute([':code' => $code, ':url' => $url]);
$nuevo = $_SERVER['HTTP_HOST'] . "/?r=$code";
}
// ------- REDIRECCIÓN -------
if (isset($_GET['r'])) {
$code = $_GET['r'];
$stmt = $db->prepare("SELECT url FROM links WHERE code = :code");
$stmt->execute([':code' => $code]);
$link = $stmt->fetch(PDO::FETCH_ASSOC);
if ($link) {
header("Location: " . $link['url']);
exit;
} else {
echo "⚠️ Enlace no encontrado.";
exit;
}
}
// ------- BORRAR ENLACE -------
if (isset($_GET['delete']) && isset($_SESSION['admin'])) {
$id = intval($_GET['delete']);
$db->exec("DELETE FROM links WHERE id = $id");
header("Location: index.php?admin=1");
exit;
}
// ------- RESETEAR TODO -------
if (isset($_GET['reset']) && isset($_SESSION['admin'])) {
$db->exec("DELETE FROM links");
header("Location: index.php?admin=1");
exit;
}
?>
Mi Acortador
Suscribirse a:
Comentarios de la entrada (Atom)
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Crear tabla si no existe $db->exec("CREATE TABLE IF NOT EXISTS links ( ...