По поводу авторизации.
Я делаю так. Проверяю логин/пароль если все правильно то в сессию запиисываю "признак авторизации":
$sess[\'auth\']=1;
В последующих страницах просто проверяю эту переменную. Если она равна 1 значит пользователь прошел авторизацию.
А я без каких-либо признаков в сессию userid заношу. (нужен он мне в некоторых скриптах потом).
И с самого начала, как
Britva уже говорил, unset($userid) делаю.
А со временем - более простой вариант - тоже текущее время заносить в сессию, а не в базу. Проверять на таймлимит - если исчерпался, прибивать таки сессию, а нет - записывать новое время.