Hola,
bueno estoy teniendo un problema medio raro que la verdad no estoy seguro de si es un problema o algo normal. Por lo menos en las aplicaciones web más conocidas no les pasa.
Cuando inicio sesión ingresando a "mipagina.com" se guarda la sesión y todo bien.. me redirige a donde me tiene que mandar y me bloquea aquellas partes donde se necesita no tener la sesión iniciada.
Ahora, escribe en la url "https://www.mipagina.com" y no tiene la sesión que se generó anteriormente, es como si fuera una "ventana de incógnito" en cuanto al tratamiento que se le da a la sesión. En esta url me deja volver a iniciar sesión y puedo hacerlo con otra cuenta exactamente igual que en las ventanas de incógnito.
¿Alguna idea?
Simplemente configura el dominio de la cookie usada por session.
session_set_cookie_params(0, '/', 'mipagina.com');
O con php 7.3 en adelante:
session_set_cookie_params([ 'domain' => 'mipagina.com']);
O lo configuras en el php.ini...
https://www.php.net/manual/en/session.configuration.php#ini.session.cookie-domain
Tambien podrías hacer un redirect de www.mipagina.com a mipagina.com.
Lo hice así con el segundo método que me pasaste, y lo puse antes del session_start(); pero es como si no trabajara y no hiciera nada.
PD: Es un hosting compartido.
Necesita estar antes de cualquier session_start. Revisa la cookie desde las herramientas de desarrollador, tiene que incluir el dominio. Si aparece el dominio raíz (e.g. mipagina.com) y no el subdominio entonces la cookie debería enviarse correctamente a cualquiera de los dos hosts.
Si eso no funciona podría ser tu hosting o algo más que estés haciendo.
session_set_cookie_param regresa un valor booleano para indicar si la operación tuvo éxito o no. Lo único que se me ocurre quizás es que sea necesario indicar un tiempo de vida a la cookie.
session_set_cookie_params([ 'lifetime' => 0, 'domain' => 'mipagina.com' ]);
Gracias, ahí funciona bien. Era que tenía que destruir la cookie para que se actualice con la nueva configuración.