Bot Discord - Commit completo con todos los cambios
This commit is contained in:
74
common/helpers/url_helper.php
Executable file
74
common/helpers/url_helper.php
Executable file
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
// Incluir el archivo de configuración
|
||||
require_once __DIR__ . '/../../config/config.php';
|
||||
|
||||
/**
|
||||
* Establece las cabeceras de seguridad, incluida la Content-Security-Policy.
|
||||
* Debe llamarse antes de cualquier salida HTML.
|
||||
*/
|
||||
function set_security_headers() {
|
||||
// CSP para permitir recursos solo del propio dominio y CDNs de confianza
|
||||
$csp = "default-src 'self'; "
|
||||
. "script-src 'self' https://cdn.jsdelivr.net https://code.jquery.com 'unsafe-inline'; " // unsafe-inline para scripts de bootstrap si es necesario
|
||||
. "style-src 'self' https://cdn.jsdelivr.net 'unsafe-inline'; " // unsafe-inline para estilos de bootstrap
|
||||
. "img-src 'self' data: " . BOT_BASE_URL . "; " // permitir imágenes del propio dominio, data URIs y el dominio externo
|
||||
. "font-src 'self' https://cdn.jsdelivr.net;";
|
||||
header("Content-Security-Policy: " . $csp);
|
||||
header("X-Content-Type-Options: nosniff");
|
||||
header("X-Frame-Options: DENY");
|
||||
header("X-XSS-Protection: 1; mode=block");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Genera una URL absoluta para el sitio
|
||||
*
|
||||
* @param string $path Ruta relativa
|
||||
* @return string URL completa
|
||||
*/
|
||||
function site_url($path = '') {
|
||||
return rtrim(BOT_BASE_URL, '/') . '/' . ltrim($path, '/');
|
||||
}
|
||||
|
||||
/**
|
||||
* Genera una URL para los assets (CSS, JS, imágenes, etc.)
|
||||
*
|
||||
* @param string $path Ruta relativa al archivo de asset
|
||||
* @return string URL completa al asset
|
||||
*/
|
||||
function asset($path) {
|
||||
return site_url('assets/' . ltrim($path, '/'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Redirige al usuario a una URL específica
|
||||
*
|
||||
* @param string $url URL a la que redirigir
|
||||
* @param int $statusCode Código de estado HTTP (por defecto 302)
|
||||
*/
|
||||
function redirect($url, $statusCode = 302) {
|
||||
header('Location: ' . $url, true, $statusCode);
|
||||
exit();
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtiene la URL actual completa
|
||||
*
|
||||
* @param string $path Ruta relativa
|
||||
* @return string URL completa
|
||||
*/
|
||||
function current_url() {
|
||||
$protocol = "http://";
|
||||
return $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifica si la URL actual coincide con el patrón dado
|
||||
*
|
||||
* @param string $pattern Patrón a verificar
|
||||
* @return bool Verdadero si coincide, falso en caso contrario
|
||||
*/
|
||||
function is_current_url($pattern) {
|
||||
$current = current_url();
|
||||
return (strpos($current, $pattern) !== false);
|
||||
}
|
||||
Reference in New Issue
Block a user