Código PHP:
<?php
require_once('include/startup.php');
if(!isset($_SESSION['token'])) {
global $self;
$ipv4 = sprintf("%u", ip2long(getenv('REMOTE_ADDR')));
// Guarda variables en la lista negra para analisis posterior
$bd=Db::getInstance();
$sql="INSERT INTO config_listanegra (ip,intento,usuario,clave)
VALUES ('$ipv4','0','$self','null')";
$bd->insertar_dato($sql);
session_destroy();
header("Location: entrar.php");
}
// Arbol de decisiones
$action = limpiar_html($_GET['action']);
// Obtiene nivel y zona
$bd=Db::getInstance();
switch ($action) {
default:
header("Location: stats.php");
break;
case "salir":
$sql="UPDATE config_listablanca
SET salida= NOW()
WHERE token='{$_SESSION['token']}'";
$bd->insertar_dato($sql);
// Cierra la sesion y regresa a pagina de inicio
session_destroy();
header( "Location: index.php");
break;
}
?>
rastree el problema y me llevo a esta subrutina, si la dejo se insertan 2 entradas en la base (la incorrecta y la correcta) ... si la quito, se inserta solo una y lo mas curioso es que la rutina no tiene ABSOLUTAMENTE NADA QUE VER CON ESTE ARCHIVO, es una subrutina que se manda llamar en otros archivos completamente diferentes...
Código PHP:
// ***************************************************************************************
// Limpiar_html.- Elimina el Cross Site Scripting
function limpiar_html($variable) {
$variable = strip_tags(stripslashes(trim(rtrim($variable))));
$variable = htmlspecialchars($variable, ENT_QUOTES);
return $variable;
}