prepare("SELECT * FROM landing_pages WHERE slug=? AND estado IN ('publicado','borrador') LIMIT 1"); $st->bind_param('s',$slug); $st->execute(); $landing = $st->get_result()->fetch_assoc(); if(!$landing){ http_response_code(404); echo "Landing no encontrada."; exit; } $landing_id = (int)$landing['id']; // validar schedule if ($landing['estado']!=='publicado' || !lp_schedule_active($conn, $landing_id)) { http_response_code(404); echo "Landing no publicada."; exit; } // variante A/B $variant = lp_pick_variant($conn, $landing_id); // null = base // contenido final = variante override o base $hero = $variant['hero_image'] ?? ($landing['hero_image'] ?? ''); $html = $variant['contenido_html'] ?? ($landing['contenido_html'] ?? ''); $css = ($landing['css_inline'] ?? '') . "\n" . ($variant['css_inline'] ?? ''); $js = ($landing['js_inline'] ?? '') . "\n" . ($variant['js_inline'] ?? ''); // bloques $bloques = lp_load_blocks($conn, $landing_id); // tracking impresión $session_id = session_id() ?: bin2hex(random_bytes(8)); $vid = $variant['id'] ?? null; $ip = $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? null; $ua = $_SERVER['HTTP_USER_AGENT'] ?? null; $ins = $conn->prepare("INSERT INTO landing_variant_stats (landing_id, variant_id, event_type, session_id, ip_address, user_agent) VALUES (?,?,?,?,?,?)"); $evt='impression'; $ins->bind_param('iissss',$landing_id,$vid,$evt,$session_id,$ip,$ua); $ins->execute(); ?> <?= htmlspecialchars($landing['meta_title'] ?: $landing['titulo']) ?>

Quiero más info

Contáctanos