No uses los session_register para trabajar con sesiones .. usa los arrays superglobales: $_SESSION .. tanto para registrar una variable (con su valor) en una sesión como para leer su valor (igual que haces con tus $_POST y demás variable externas a tu script).
Puede ser que uses register_globals a OFF y por eso no puedes usar session_register() .. además que si usas PHP 4.1.x en adelante debes trabajar con los arrays superglobales y así hacer independiente tus aplicaciones del valor de esa directiva (php.ini).
Otros problemas que puedas tener son sobre la propagación del SID, .. por lo que usas en tu código lo haces por cookies (o estás obligando a la propagación del SID de sesión .. no de las otras cookeis que a su vez usas tu en tu aplicación). La propagación del SID en cookies requiere de: (php.ini o lo puedes ver en un phpinfo()):
session.use_cookies = ON
Y un navegador que acepte cookies.
más info:
www.php.net/session
Por lo demás .. tampoco uses:
if(!$ultima_visita){
sino en tal caso:
if (!isset($_SESSION['ultima_visita'])){
La función isset() (o incluso empty()) te sirve para ver si una variable está definida o no.
------
Otro detalle .. session_register() registra variables $variables (globales) no $_POST['variable'] ..
Por eso insisto que deberías hacer (uso de los arrays superglobales) para asigar tus variabels de sesión tipo:
$_SESSION['variable']=$_POST['variable']
Y .. el header("location: .. pagina ... ");
hacerlo al final de la declaración de las variables junto con un
exit; para terminar la ejecución de tu script en ese punto, pues .. es lo que estás haciendo: llegar a ese punto y redireccionar tu script a otro para "cambiar" .. no te interesa que siga ejecutandose el código que viene a continuación.
Un saludo,