2011-05-12 15 views
5

¿Cómo paso los datos de la sesión PHP de un host virtual Apache a otro? Actualmente estoy ejecutando Apache 2.2.17 y PHP 5.3.3 y he configurado un host para administrar una única aplicación de inicio de sesión y necesito pasar esto a otros dos hosts virtuales que ejecutan aplicaciones separadas. Esto es algo que pretendo desarrollar más, pero por ahora pasar los datos de la sesión sería lo más fácil.Transferir datos de sesión entre hosts virtuales Apache

Actualmente este código crea la primera sesión en el subdominio auth.domain.com SSO y luego pasa el usuario a la interfaz de la aplicación app.domain.com (se ha recortado):

$user = new User; 
    $user->set_user_session(); 
    Header("Location: $redirectURL"); 
    exit; 

El servidor está completamente administrado de forma privada, por lo que la seguridad multiusuario no es una preocupación. Sin embargo, si alguien ve algún problema de seguridad más allá de eso, por favor hágamelo saber. Si conoce una metodología mejor, comparta y la investigaré más a fondo. Aprecio la ayuda.

Respuesta

3

Hasta donde yo sé, las sesiones de PHP no son (por defecto) conscientes del host virtual: necesitaría pasar el ID de sesión como parte del redireccionamiento y luego establecerlo en el otro host virtual. Así que algo como:

$sessionid = session_id(); 
Header("Location: $redirectURL?session=$sessionid"); 
exit; 

Y luego en el blanco de la redirección:

session_id($_GET['session']); 
session_start(); 

Trate de eso y que me haga saber cómo funciona.

+0

Operando esto ahora y voluntad l y sabes si funcionó. ¡Gracias! – crockpotveggies

+0

Claro: debe asegurarse de realizar la llamada 'session_id ($ _ GET ['session']);' antes de acceder a CUALQUIER dato de sesión. – Femi

+0

He podido cambiar la ID de la sesión, pero por alguna razón no puedo acceder a las variables de la sesión. Confirmado por echo'ing session_id() pero cuando intento hacer eco de una variable $ _SESSION [] no está establecido. Cualquier configuración de PHP que afectaría esto? – crockpotveggies

0

Sesiones compartido Si usted está hablando de subdominios (sin especificar) usted puede ser capaz de establecer el dominio de las cookies de sólo el dominio de modo que el identificador de sesión se pasa como una galleta entre ellos

session_set_cookie_params(0, '', '.domain.com');

así, my.domain.com y your.domain.com ambos recibirían la cookie para .domain.com

Con cualquiera de las opciones en su lugar se puede utilizar una base de datos o Redis storag compartida e para la gestión de sesiones compartidas. (compartir datos entre servidores de almacenamiento a través de Sesión)

En tanto las configuraciones de almacenamiento de sesión son los mismos para todas las máquinas virtuales.

Cuestiones relacionadas