If you have PHP version 4.1.0 or higher then just use $SESSION. You're mixing session_register() and $SESSION and you should not. Use one or the other but not both. Read the caution boxes at this manual page:
http://us2.php.net/manual/en/function.session-register.php
You're not using session_register() properly. It's designed to allow use of your own variable names. Also, session_register() requires register_globals to be on (which is a security risk). Just use $_SESSION instead.
When doing a header() with location you have to manually pass the session name and ID yourself since PHP won't do it. This is required if a user doesn't accept cookies and only pertains if you have the session.use_trans_sid php.ini setting on. If you have it on, then you should do something like this:
header('Location: page2.php?' . SID);
exit;
FYI: Please note that the header() with location command does not redirect right there and then when it's executed. It actually redirects when your script ends or an exit is reached. So, to ensure no logic flow problems in your script, you should have an exit right after every header() with location to force redirection to occur immediately.