Tengo un problema muy raro... tengo la siguiente aplicacion que basicamente decide a que archivo pasarle el control (aun no esta terminada). Si el usuario trata de abrir el archivo directamente sin haberse registrado antes, guardo el intento (IP, fecha, y nombre de archivo accesado) en la base de datos y redirecciono a la pantalla de ingreso
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;
}
?>
Lo curioso es que al probarlo note que habia 2 registros en la base, el archivo original y la redireccion PERO AL ARCHIVO CORRECTO, es decir como si hubiera entrado correctamente el usuario
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;
}
Me pueden ayudar a entender que puede estar pasando???