Foros del Web » Programando para Internet » PHP »

Extraño comportamiento de variable Session

Estas en el tema de Extraño comportamiento de variable Session en el foro de PHP en Foros del Web. Hola Tengo un extraño comportamiento con una variable de sesión, durante un proceso de borrado de registros, el cual sigue el siguiente derrotero de procesos: ...
  #1 (permalink)  
Antiguo 25/11/2010, 07:18
 
Fecha de Ingreso: octubre-2007
Mensajes: 267
Antigüedad: 14 años, 8 meses
Puntos: 1
Extraño comportamiento de variable Session

Hola

Tengo un extraño comportamiento con una variable de sesión, durante un proceso de borrado de registros, el cual sigue el siguiente derrotero de procesos:

1ro. El usuario cliquea en un link "borrar" que dirije el proceso a una funcion js llamada eliminarReg la que posee el siguiente código:
r = confirm("Se eliminará el registro seleccionado... ");
if(r) {
parent.document.iframeTemas.location.href = "eliminar.php?id="+id";
parent.document.location.href = "frmTemas.php";
}


2da. El script eliminar.php borra el registro y carga una variable de sesion.

3ro. Como se ilustra en el 1er. etapa se ejecuta:
parent.document.location.href = "frmTemas.php";

4to. En el script frmTemas.php, si la variable de sesión posee contenido, la asigno a una variable php $m, luego borro el contenido de la variable de sesión. y en el onload del body llamo a una función js que hace una alert de dicha variable.

Problema: si bien la variable de sesión siempre se carga correctamente en eliminar.php, luego por razón que desconozco, frmTemas.php muestra la instancia anterior de la variable de sesión. Como si parent.document.location.href no recargara frmTemas.php, sino que usara el que ya está en memoria. Aveces anda todo bien,, aveces no... :S

Agradeceré ayuda!!!
  #2 (permalink)  
Antiguo 25/11/2010, 09:06
Avatar de jcarrascal  
Fecha de Ingreso: enero-2008
Mensajes: 87
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: Extraño comportamiento de variable Session

El problema es que no le das tiempo al primer script de ejecutarse completo cuando ya estas cargando el segundo. Estas líneas de javascript se ejecutan casi simultáneamente:

parent.document.iframeTemas.location.href = "eliminar.php?id="+id";
parent.document.location.href = "frmTemas.php";

Entonces lo que puedes hacer es poner un delay entre las dos o ejecutar la segunda en el evento onload del iframe.

Claro que la solución real es simplemente hacer una petición a eliminar.php y que este redirija a frmTemas.php. Algo así:

Código:
<a href="eliminar.php?id=15" onclick="return confirm('Seguro?')">Borrar</a>

// en eliminar.php
$id = (int)$_REQUEST['id'];
// TODO: borrar el registro
$_SESSION['msg'] = 'Registro $id eliminado';
header('Location: frmTemas.php');

// en frmTemas.php
echo $_SESSION['msg'];
$_SESSION['msg'] = null;

Etiquetas: extraño, session, variables
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:51.