Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/12/2011, 19:56
Avatar de Chico3001
Chico3001
 
Fecha de Ingreso: septiembre-2011
Ubicación: Mexico, DF
Mensajes: 112
Antigüedad: 13 años, 3 meses
Puntos: 12
Llamada duplicada a header

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($variableENT_QUOTES);
    return 
$variable;

Me pueden ayudar a entender que puede estar pasando???