Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con isset() y Sesión

Estas en el tema de Problema con isset() y Sesión en el foro de PHP en Foros del Web. Buenas noches amigos. Estoy desesperado desde el viernes pasado. La cosa es que estoy haciendo el proyecto fin de carrera y eso, el viernes pasado ...
  #1 (permalink)  
Antiguo 01/05/2011, 16:57
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 13 años, 5 meses
Puntos: 1
Problema con isset() y Sesión

Buenas noches amigos.

Estoy desesperado desde el viernes pasado. La cosa es que estoy haciendo el proyecto fin de carrera y eso, el viernes pasado tuve que resolver un error que me ha llevado a otro... Y estoy perdiendo un tiempo valiosísimo. Al grano.

Uso xampp para linux (llamadme lo que querias jeje), y he tenido que borrar la anterior carpeta lampp de /opt (teniendo unas copias de seguridad anteriores, obviamente). Al restaurar, he tenido que copiar los ficheros php y demas de htdocs, php.ini del directorio etc de lampp y luego la base de datos de phpmyadmin y mysql (todo parece estar en orden en este aspecto).

Ahora, me estoy volviendo loco. (Estaba a punto de terminar las pruebas del último caso de uso, y zas, me ocurrió esto.) A la hora de ejecutar un caso de uso, me debería de aparecer un formulario vacío, obviamente no lo había ejecutado anteriormente. Pues no, me aparecían varios input de tipo text rellenados con varios espacios en blanco, mejor dicho, TODOS los input de tipo text estaban rellenados con numerosos espacios.

Bien, siguiendo la comprobación a ver a qué se podía deber, he descubierto que tras hacer un print_r($_SESSION) (e imprimirme el contenido de la sesión) no me borra unas variables que existen. Digamoslo así, para que lo entendáis:

1) hago un print_r($_SESSION) y el resultado es este:
Código PHP:
Array
(
    [
idTipoTrabajador] => 1110
    
[user] => jefe_produccion
    
[datos_de_error] => Array
        (
            [
anio_parada_comienzo] =>             
            [
mes_parada_comienzo] => 1
            
[dia_parada_comienzo] => 1
            
[anio_parada_fin] =>                 
            [
mes_parada_fin] => 1
            
[dia_parada_fin] => 1
            
[error_parada] => 1
            
[anio_crea_comienzo] =>                         
            [
mes_crea_comienzo] => 1
            
[dia_crea_comienzo] => 1
            
[anio_crea_fin] =>                 
            [
mes_crea_fin] => 1
            
[dia_crea_fin] => 1
            
[error_crea] => 1
            
[duracion_parada1] =>                     
            [
duracion_parada2] =>                     
            [
error_duracion] => 1
            
[vel1] =>                     
            [
vel2] =>                 
            [
error_vel] => 1
            
[artrech1] =>                             
            [
artrech2] =>                     
            [
error_artrech] => 1
            
[causa] => Array
                (
                    [
0] => 1
                    
[1] => 2
                    
[2] => 3
                
)

            [
creador] => 
            [
participante] => 
            [
articulo] => 
            [
turno] => 
            [
maquina] => 
            [
seccion] => 
            [
error_maqsec] => 
        )

    [
error_en_consulta_informes] => 1
    
[acceso_seguro] => si

2) Siguiendo el flujo de datos de mi script, tengo esto:

Código PHP:
if( isset($_SESSION["error_en_consulta_informes"]) ){
            unset(
$_SESSION["error_en_consulta_informes"]);
        }
        if ( isset(
$_SESSION["datos_de_error"]) ){
            unset(
$_SESSION["datos_de_error"]);
        } 
La cosa es que teniendo en cuenta que antes de los if, se ve claramente que existen esas variables, por qué narices no me entra en esas ramas condicionales.

He de decir que esto no pasaba antes de haber tenido que recomponer la carpeta lampp, aunque debería de ser independiente ahora me ocurre esto..

Alguien sabe por qué me ocurre esto? Demasiado extraño, y lo peor es que me estoy desmoralizando...

Una última ayuda desde este foro por favor, les estoy muy agradecido por la ayuda que dan...

Un saludo compañeros ^^
  #2 (permalink)  
Antiguo 01/05/2011, 17:06
 
Fecha de Ingreso: abril-2006
Ubicación: Bogotá
Mensajes: 251
Antigüedad: 18 años
Puntos: 14
Respuesta: Problema con isset() y Sesión

Bueno, pueden ser varias cosas, antes que nada, dices que tienes esto:

Código PHP:
if( isset($_SESSION["error_en_consulta_informes"]) ){ 
            unset(
$_SESSION["error_en_consulta_informes"]); 
        } 
Si imprimes algo con echo dentro de ese condicional if, te lo muestra?

Si entendí bien, el problema es que no te borra esas sesiones en esta parte, es así? si es así imprime algo con un echo y dinos si entra a esa parte.
  #3 (permalink)  
Antiguo 01/05/2011, 17:12
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con isset() y Sesión

Ya probé a hacer echos dentro de esos if, y no los imprime.

He probado a hacer echo en la parte de arriba del script, donde me llama a la función que crea la sesión:

Código PHP:
if ( !isset($_SESSION) ) {
   
crearSesion();
   echo 
"hoola <br>";

Y nada. Esa es una gran pregunta, por qué no entra en esas condiciones, pero la mayor es que por qué me rellena el sistema los espacios blancos en los inputs... :S

No sé si podré dormir hoy.
  #4 (permalink)  
Antiguo 01/05/2011, 17:17
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con isset() y Sesión

Acabo de comprobar que no son espacios, sino tabulaciones :(
  #5 (permalink)  
Antiguo 01/05/2011, 17:21
 
Fecha de Ingreso: abril-2006
Ubicación: Bogotá
Mensajes: 251
Antigüedad: 18 años
Puntos: 14
Respuesta: Problema con isset() y Sesión

¿Puedes poner la página donde destruyes esas variables de sesión?
  #6 (permalink)  
Antiguo 01/05/2011, 17:24
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con isset() y Sesión

a qué te refieres con eso? tengo muchas lineas de código y no te voy a poner a leer todo...
  #7 (permalink)  
Antiguo 01/05/2011, 17:29
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con isset() y Sesión

Bien mi cerrar sesion hace esto:

Código PHP:
if( !isset($_SESSION) ){
    
crearSesion();
}

/* Creamos la variable $ruta y la inicializamos con el contenido de $_SERVER["SCRIPT_NAME"] */
$ruta $_SERVER["SCRIPT_NAME"];
/* Creamos la variable $ruta y la inicializamos con el contenido de $_SERVER["SCRIPT_NAME"] */

if ( comprobarAccesoSeguro($ruta) ){
    
//echo "Hemos entrado. <br>";
    //Quitamos de la base de datos, de la tabla que mantiene los usuarios que estan conectados, el usuario actual conectado.
    
quitarUsuarioConexionActual();
    
    
//echo "Hemos quitado el usuario conectado actualmente<br>";
    //destruimos la sesion
    
destruirSesion();
    
}

/* Redirigir al índice (index.php) */
header("Location: ..");
/* Redirigir al índice (index.php) */ 
y destruirSesion():
Código PHP:
/**
 *
 * @desc Cierra una sesion anteriormente creada.
 * @return bool True si se destruye bien, false si no.
 */
function destruirSesion(){
    
    
/* Si la sesion esta iniciada */
    
if( isset($_SESSION) && !is_null($_SESSION) ){
        
/* Reiniciamos la variable $_SESSION con un array vacio. Ademas hacemos session_unset() para eliminar cualquier posible resto
         * Cerramos la sesion con sid actual gracias a session_destroy(). 
         */
        
$_SESSION = array();
        
session_unset();
        
        return 
session_destroy();
        
/* Reiniciamos la variable $_SESSION con un array vacio. Ademas hacemos session_unset() para eliminar cualquier posible resto 
         * Cerramos la sesion con sid actual gracias a session_destroy(). 
         */
    
}else{
    
/* Si no esta la sesion iniciada, no habra necesidad de destruirla */
        
return false;
    
    }

  #8 (permalink)  
Antiguo 01/05/2011, 17:53
 
Fecha de Ingreso: abril-2006
Ubicación: Bogotá
Mensajes: 251
Antigüedad: 18 años
Puntos: 14
Respuesta: Problema con isset() y Sesión

Uhm, bueno, en realidad no era eso jeje, era el resto de código donde tienes el unset de esas dos variables de SESSION.

Bueno, recapitulando el problema, según te entiendo es que tu quieres destruir dos variables de sesión pero parece como si no existieran?

Podrías ser algo mas claro para poder ayudarte con algo mas concreto.
  #9 (permalink)  
Antiguo 01/05/2011, 17:59
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con isset() y Sesión

Si mis preguntas:

1) Por que son rellenados los inputs de tipo text con tabulaciones.

2) Por qué no me entra en esas ramas de condiciones. Ahora te pongo los dos ficheros, ojala me puedas echar un cable..
  #10 (permalink)  
Antiguo 01/05/2011, 18:22
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con isset() y Sesión

consultar_informes_incidencias.php : http://www.megaupload.com/?d=GJIN27HC
gestor_consultar_informes_incidencias.php : http://www.megaupload.com/?d=PMEA8R7I

Muchas gracias ^^
  #11 (permalink)  
Antiguo 02/05/2011, 03:54
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con isset() y Sesión

Te has podido bajar los dos ficheros?no los pude meter aqui ya que ocupaban demasiado..
  #12 (permalink)  
Antiguo 02/05/2011, 04:20
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con isset() y Sesión

Otra cosa extraña que he podido ver es que los inputs rellenados tienen establecido maxlength="4", y hay veces que se rellenan con más de 4 caracteres...
  #13 (permalink)  
Antiguo 02/05/2011, 05:41
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con isset() y Sesión

Creo que ya está solucionado: el problema de las tabulaciones residía en que entre las etiquetas <?php y ?> solía dejar tabulaciones y/o espacios que se traducían en el navegador HTML.... Muchas graciasss, con lo que sea comento aquí ^^
  #14 (permalink)  
Antiguo 02/05/2011, 05:47
 
Fecha de Ingreso: febrero-2010
Ubicación: Republica Dominicana
Mensajes: 53
Antigüedad: 14 años, 2 meses
Puntos: 4
Respuesta: Problema con isset() y Sesión

amigo para ayudarte quiero ver dos cosas,

la parte donde tu creas la sessiones y la parte donde la eliminas, porque si hay una session que no se elimina es porque no la estas destruyendo....

Saludos,
  #15 (permalink)  
Antiguo 02/05/2011, 08:59
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con isset() y Sesión

#14 tienes el #7 donde las elimino y su función correcondiente :D
  #16 (permalink)  
Antiguo 02/05/2011, 10:27
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con isset() y Sesión

Solucionado amigos!! Mil gracias!

Etiquetas: isset, sesión
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:25.