Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danirod/3667962 to your computer and use it in GitHub Desktop.
Save danirod/3667962 to your computer and use it in GitHub Desktop.
Código fuente del sistema de bloqueo de componentes de terceros usado en mi web
<?php
/*
* Sistema de bloqueo de componentes de terceros
* Copyright (C) 2012 Dani Rodríguez <danirod@outlook.com>
*
* Este código fuente proporciona de manera pública TAL CUAL, sin garantías de
* ningún tipo. Este código fuente queda en dominio público. Se permite el
* acceso, uso y reutilización de este código fuente en otros sistemas sin
* necesidad de permiso previo ni de notificación de uso.
*/
/**
* Constante con el valor que tendrán los atributos HTTP que serán usados
* cuando se quieran desactivar las funciones que requieren cookies en el
* sitio web.
*/
define('DEACTIVATE', 'deactivate');
/** URL del Gist en el que se puede ver este código fuente. */
define('GIST_URL', 'https://gist.github.com/3667962');
/**
* Sanea una entrada de usuario. Es conveniente sanear las variables que
* procedan del exterior (por ejemplo, las que introduce el usuario por medio
* de un atributo GET o POST al cargar la página por el protocolo HTTP). No
* sanear una entrada puede ser peligroso si un usuario malintencionado
* consigue detectar y explotar vulnerabilidades que dependen de la entrada de
* usuario (ataques XSS).
*
* @param $val valor que
*/
function sanitize_input($val)
{
$val = htmlentities($val);
return $val;
}
/**
* Muestra el encabezado de la página web. Tanto el formulario de bloqueo como
* el resultado de ejecutar ese bloqueo se muestran en una página web. Esta
* función genera el código HTML que debe aparecer en el encabezado de la página
* y lo devuelve. Puede ser mostrado incluyéndolo en un echo o en un print.
*
* @return string contenido del encabezado de la web maquetado como HTML.
*/
function display_head()
{
$html = '<!DOCTYPE html><html><head>' .
'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>'.
'<title>Sistema de bloqueo de componentes de terceros</title>' .
'</head><body><h1>Sistema de bloqueo de componentes de terceros</h1>';
return $html;
}
function display_footer()
{
$html = '<hr/><p><strong>Copyright &copy; 2012 Dani Rodríguez - ' .
'Este script es de código abierto. Puedes ver su contenido en ' .
'<a href="' . GIST_URL . '">este enlace</a></p></body></html>';
return $html;
}
/**
* Esta variable indica si el usuario desea que se realice una acción. Cuando
* esta variable sea verdadera, es que el usuario quiere que el script se
* ejecute (por ejemplo, que modifique su configuración de cookies). Si esta
* variable es falsa, es que sólo quiere que se le muestre la página web.
*/
$accion = (isset($_POST['changeSettings']) &&
sanitize_input($_POST['changeSettings']) == 'change');
if($accion)
{
/*
* Parseamos las decisiones del usuario. Las variables $desactivar_analytics
* y $desactivar_plugins contendrán estas decisiones. Para cualquiera de
* estas dos, si el valor es verdadero, es que el usuario desea bloquearlos.
* En caso de ser falsos, es que no quiere bloquearlos.
*/
$desactivar_analytics = (isset($_POST['analytics'])
&& sanitize_input($_POST['analytics']) == DEACTIVATE);
$desactivar_plugins = (isset($_POST['plugins'])
&& sanitize_input($_POST['plugins']) == DEACTIVATE);
/*
* Si el usuario desea desactivar Google Analytics debemos eliminar las
* cookies que genera este servicio, __utma, __utmb, __utmc y __utmz,
* y generar una cookie que impida que vuelvan a generarse.
*/
if($desactivar_analytics)
{
// Eliminamos estas cookies.
setcookie('__utma', null, time() - 3600, '/');
setcookie('__utmb', null, time() - 3600, '/');
setcookie('__umtc', null, time() - 3600, '/');
setcookie('__utmz', null, time() - 3600, '/');
// Creamos la cookie de bloqueo.
setcookie('desactivar_analytics', DEACTIVATE, time() + 86400*365, '/');
}
/*
* Si el usuario desea desactivar los plug-in sociales debemos generar una
* cookie que impide mostrar los complementos sociales. No podemos borrar
* las cookies que ha generado estos servicios porque son de terceras
* personas.
*/
if($desactivar_plugins)
{
// Creamos la cookie de bloqueo.
setcookie('desactivar_analytics', DEACTIVATE, time() + 86400*365, '/');
}
echo display_head() .
'<p>Gracias, su configuración ha sido modificada.</p>' .
'<p><a href="/">Regresar a la página principal</a>.</p>' .
display_footer();
}
else
{
echo display_head();
echo '<form action="?" method="POST">';
echo '<input type="hidden" name="changeSettings" value="change" />';
echo '<p><input type="checkbox" name="analytics" value="'.DEACTIVATE.'" />'.
' <strong>Desactivar Google Analytics</strong>. Esta acción borrará ' .
'todas las cookies que Google Analytics creó y creará una cookie ' .
'denominada bloquear_analytics que impedirá que se vuelva a cargar el' .
'componente.</p>';
echo '<p><input type="checkbox" name="plugins" value="'.DEACTIVATE.'" />'.
' <strong>Desactivar los plug-in sociales de terceros</strong>. Esta ' .
'acción creará una cookie denominada bloquear_plugins que impedirá ' .
'que se vuelvan a mostrar estos componentes. Al ser componentes de ' .
'terceros no se borrarán sus cookies, que tendrán que ser eliminadas '.
'manualmente por el usuario.</p>';
echo '<p><input type="submit" name="save" value="Guardar cambios" /></p>';
echo '</form>';
echo display_footer();
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment