No se puede establecer cookies dominios de forma predeterminada. Creo que puede configurar un archivo P3P para habilitarlo. http://p3ptoolbox.org/guide/section4.shtml#IVd No lo he hecho yo mismo, así que no sé cuánto lo implementan los navegadores o si incluso funciona de esa manera.
Parece que Virb está utilizando JavaScript. Tiene una biblioteca AJAX, que realiza una solicitud JSON-P al servidor virb si no se establece ninguna cookie de sesión. (La primera carga de Firefox puede ver esto en Firebug) La respuesta JSON solo le permite a la página saber si el usuario está conectado o no, y actualiza las partes de la página que necesitan reflejar el estado del usuario.
Entonces, ¿qué ocurre? La página incorpora algunos JS de virb.com. Como el dominio es virb.com, las cookies configuradas en virb.com se envían al servidor. El servidor responde con el resultado de la cookie al sitio externo.
En el caso de virb, que no funcionará correctamente sin JS, creo que es una buena opción. Sin embargo, podría hacer lo mismo con los redireccionamientos HTTP.
Si el host HTTP no es el dominio principal (example.com):
if (!$_COOKIE['sessionid'] && $_SERVER['HTTP_HOST'] != 'example.com') {
// redirect to your main site
header('Location: http://example.com');
}
En el sitio principal, establezca la cookie, y enviar al usuario de vuelta al dominio externo (domain.com) que pasa la identificación de la sesión en la Ubicación.
header('Location: http://domain.com.com?sessid='.urlencode($_COOKIE['sessionid']));
El bit final es volver a dirigir de nuevo a la página que estabas en que ahora que tiene la misma sesión en marcha.
setCookie(...); // sessid in $_GET['sessid']
header('Location: http://domain.com/');
Tenga en cuenta, en la actualidad se puede enviar la página que está actualmente en la parte posterior de example.com en el primer paso, por lo que puede volver a dirigir de nuevo a él más tarde.
Dado que solo está usando encabezados (no es necesario que genere contenido) y en la mayoría de los casos HTTP/1.1, estará en el mismo socket TCP, creo que es bastante eficiente y será más compatible que el Opción JavaScript
Editar: no olvide configurar la cookie cuando regrese al dominio externo.
El último paso es opcional pero evita que el sessid se encuentre en una URL. Lo cual es más un problema de seguridad que mantenerlo en encabezados HTTP.
duplicado de http://stackoverflow.com/questions/1064243/php-sessions-across-sub-domains/1064278 – Residuum
No en todos los subdominios. Me refiero a señalar un CNAME desde otro dominio a mi dominio y aún mantener la sesión. –