Thanks for your reply, that certainly gives me a bit more to think about.
For the particular project I'm working on, as I said, security isn't really a consideration: the site does not require users to log on. What I plan to be using sessions for is mainly storing which 'version' of a site a user has chosen to view.
The client likes frames and wanted to use them for the site, and so this will be the default, but I will also offer a non framed version, and a text only version for accessibility. Storing the version they are viewing in the session seemed nicer than appending it to all the URLs.
I've also had the idea of the frameset registering a session variable to say that it's been run. Pages that are supposed to be loaded into the frameset will check for that variable, and go to the frameset page if it's not there. This will hopefully avoid people ending up viewing a page without the menu etc, as it's less likely that a page will be loaded on its own later on in the session.
But this means that if cookies are disabled, the site will not remember which version they are viewing and keep defaulting to the frameset - not good.
I think what I'll do in this case is have an index.php which starts a session and stores a variable in it, then redirect to the frameset page. That page will check for the first variable. If it's not there then the cookie wasn't accepted (a new session was started) and we go to a page explaining why the site needs a cookie.
Thanks for your ideas, I'll certainly bear them in mind for future. As the main audience for this site will be home users I might use the IP storage technique as well, just to avoid one user getting another's preferences.