Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/08/2006, 11:53
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Nigel Ver Mensaje
Sí, por lo general PHP no puede gestionar la sesión si abres una ventana nueva con javascript (popup / window.open), pero la solución es muy sencilla: basta pasar de alguna forma el id de sesión a la nueva ventana, bien por cookies o por parámetro en la url, y luego iniciar sesión en la nueva ventana pasandole dicho id a session_start()

Sería algo así (no probado)
En la página que lanza el popup:
Código:
<a href="#" onclick="window.open('http://.......?idsesion=<?php echo session_id() ?>')">Nueva ventana</a>
En el popup, al principio de todo, antes de escribir cualquier texto:
Código:
<?php
   session_id($_GET["idsesion"]);
   session_start();
?>
mmm

PHP Puede propaga el SID (Identificador Único de sesión) por dos formas:
URL y cookies

Primero hay que confirmar que método usas .. lo más probable es que use propagación del SID en el URL:

session.use_trans_sid = ON

y/o a su vez session.use_cookies = ON (que indicaría propagación del SID en cookies) pero tu cookie no se está creando (por qué las bloquea tu navegador por ejemplo).

El el caso de que PHP esté re-escribiendo el URL para insertar el SID automáticamente en links y redireccionamientos . . lo hace en ciertos tag's HTML (que se indican en url_rewrite_tags = ..... de tu php.ini). Lo que no hace "automáticamente" es insertar el SID en redireccionamientos tipo javascript, ni header() de tipo "Location" .. ni en HTML como "META" de tipo frefresh ni en otros tantos.

Si vas a propagar el SID en el URL .. fuerzalo en configuración de PHP (ideal) y propagalo -a mano- en todos tus redireccionamientos, links, formularios .. etc. Haciendolo "a mano" no dependeras de configuración de PHP o tener casos "especiales".

El SID para propagarlo en el URL no puedes pasar sólo session_id() sino SID (que incluye: nombre sesión y sesion id) .. Para eso tienes la constante: SID

Código PHP:
<a href="#" onclick="window.open('http://.......?<?php SID ?>')">Nueva ventana</a>
Y en tu script PHP accedes a tu sesión en la forma normal ..

Código PHP:
<?
session_start
();
ehco $_SESSION['tuvariable'];
?>
No puedes definir el "ID" de sesión de una variable que propagas en el URL ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.