Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Paso de sesiones o como editar datos en ventanas emergentes

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:


Código:
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í:


Código PHP:
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():


Código:
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
Responder Con Cita
  #2  
Antiguo 09-06-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
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/...d/12039/fid/51

Saludos
Responder Con Cita
  #3  
Antiguo 10-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #4  
Antiguo 10-06-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
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/...d/1426/fid/129


Saludos...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 08:53:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi