Ok, well what I see that you're doing wrong is you're still storing all the info in the cookie, or you're not loading up the old session. Sessions don't act like cookies do. A session is where the data is stored on the SERVER. When you use sessions without cookies, you are forced to login every new visit to the site. I guess it depends on how long you're making the sessions live for, but this is how I do it on my site.
At the beginning of the 'life' of the browse you must call session_start();
but if you are using cookies too, what I do, is store the session ID in the cookie. So if you want to load up that same session and have all the variables SET (they are stored in the session ANYWAY), just before you call session_start(), you call session_id($oldidfromcookie). So for instance, at the beginning of each page on your site that requires a register, just:
if(isset($_COOKIE["sessid"])){
$sessid = $_COOKIE["sessid"];
session_id($sessid);
}
session_start();
And at the end of your page, where you're storing all your variables, call your session_register's and set your sessid in the cookie. For Instance:
$email = 'NiX@NiXXeD.org';
session_register($email);
//---set $sessid cookie here - I'm lazy to write the code =0
The 2 code examples above should help a little. If you have any questions, feel free to email me (at the address in the second code example). Hope this helps!