Sobre lo que comentas de la sesión .. así es como funciona la propagación del SID y la relación que guarda este con el archivo físico que se crea:
Al "abrir" tu ventan (la primera) .. tu script PHP inicia la sesión con su correspondiente session_start() .. esto genera un SID válido -> se propaga el SID por el médio que uses (cookies, URL ...). Si el SID le llega propagado a un script cualquiera, al usar session_start() .. php le asocia el mismo SID válido y continua usandolo .. por ende todo lo que trabajes (variables en la sesión) caerá a ese mismo archivo.
Por esto mismo, si el SID se pierde (no se propaga: sea por qué se te olvidó propagarlo en el URL .. o la cookie no se creó/se borró) al "iniciar" el uso de sesiones con session_start() .. al no "detectarse" un SID propagado, se creará uno nuevo (=un nuevo archivo físico) por eso .. no puedes acceder a las variables de sesión (no existen) ya que no están ahí .. bajo ese "nuevo" SID sino bajo otro que "perdistes" el enlace con el. Si pudieras recuperar ese "SID" antes de que session.gc_maxlifetime termine de expirar ese SID (haciendolo nulo y pasando al estado "garbage" el archivo de sesión creado) podrías poder retomar la sesión con los valores que tenía. (He de ahí por ejemplo el por qué no es recomendable propagar el SID en el URL donde podría caer en otras manos y ser usado en tu contra).
------
El tema de las cookies .. así las registras .. pero no se vé como intentas (ni donde exactamente) donde pretendes leer su valor. Recuerda que tanto cookies como sesiones no quedan disponibles hasta la próxima petición al servidor que hagas (sea una recarga de página o bien algun link que hagas .. formulario que hagas el Submit .. etc).
También fijate en la documentación oficial de setcookie() (
www.php.net/setcookie) por qué hay más parámetros que podrian influir (como la ruta o dominio de validez de esa cookie).
Un saludo,