¿Como estás iniciando la sesión? Un simple session_start() con los valores default seguro...
En adición a
setcookie() crea una función que configure la sesión como quieras y tambien hay que renovarla cada 30 min (es lo recomendado):
En el siguiente orden:
- Crear tus parametros de cookie (nombre, dominio, etc) y obtenen los actuales con (
session_get_cookie_params()) para usar los que quieras dejar por defecto.
- Cambiar los parametros de la cookie actuales (
session_set_cookie_params()) pasandole tus parametros y los que quieras dejar por defecto como argumentos (en el orden que indica la documentación).
- Darle nombre a la sesión (
session_name()).
- Empezar sesión (
session_start()).
- Crear una variable de sesión asignandole time() para saber cuando fue creada, pero comprobando primero que no exista ya.
- Comprobar si la sesión fue creada hace más de 30 min (18000 segundos), usando la variable anteriormente creada, y regenerar la sesión (
session_regenerate_id()). Actualizar la variable de sesión que contiene time().
Cualquier duda o problema con tu función, muestranosla y te ayudaremos.
Una vez tengas tu función creada, la llamas al principio de tu index.php, en lugar de session_start().