PDA

Ver la Versión Completa : Paso de sesiones o como editar datos en ventanas emergentes


roman
09-06-2005, 20:41:06
Hola,

Supongan que tengo un script personas.php que muestra una lista de personas.

Cada elemento en la lista tiene un enlace:

<a href='javascript: editar(3456)'>Juan de las Pestañas</a>

La función js editar abre una ventana emergente para editar los datos de la persona:



function editar(id)
{
window.open('editar_persona.php?id=' + id);
}


El script editar_persona.php consulta a la base de datos para obtener la información de la persona asociada al id que se le pasa como parámetro.

Hasta aquí todo muy bien

El problema empieza cuando hay que meterle seguridad al asunto.

Digamos que todos mis scripts comienzan así:



session_start();
if (!isset($_SESSION['usuario']))
die('no ha iniciado sesión en el sistema');


La cuestión es que la ventana emergente ya no reconoce la sesión de la ventana con la lista de personas y por tanto actúa como si no se hubiera iniciado sesión en el sistema.

Lo único que se me ha ocurrido es pasar el id de la sesión en el enlace. Este id lo obtengo con session_id() al comienzo del script personas.php y formo el enlace en la función editar():



function editar(id)
{
window.open('editar_persona.php?id=' + id + '&sid=<?=$sid?>');
}


y el script editar_persona.php usa este id para abrir la sesión con lo cual ya me reconoce la sesión de la ventana de personas.

Sin embargo el id de la sesión queda a la vista de todo el mundo en el código html de personas.php y no sé qué tan grave es esto.

¿De qué manera podría manejarse esta situación?

// Gracias

maeyanes
09-06-2005, 21:24:48
Podrías probar usando el método POST y recibir las variables vía el arreglo global $_POST.

Aquí encontré un ejemplo para usar POST sin formularios, espero te sirva:

http://www.faqts.com/knowledge_base/view.phtml/aid/12039/fid/51

Saludos

roman
10-06-2005, 18:03:56
Hola maeyanes, gracias por contestar.

No me queda muy clara tu sugerencia. La ventana emergente se abre desde el cliente (con javascript) mientras que el método que mencionas se ejecutaría desde el servidor.

Quizá no sea tan malo pasar el id de la sesión en la llamada a la ventana emergente. A fin de cuentas este id de cualquier forma se encuentra en una cookie en el cliente. Había pensado en usar session_regenerate_id luego del POST de la ventana emergente para que sea distinto cada vez.

Seguiré probando.

// Saludos

maeyanes
10-06-2005, 18:20:12
Tienes razón, pasé en alto que necesitas hacerlo desde el cliente.

Checa este ejemplo a ver si te sirve:

http://www.faqts.com/knowledge_base/view.phtml/aid/1426/fid/129


Saludos...