by default php serializes session data and writes it to a txt file in the dir defined in
session.save_path
php uses garbage collection to clean up old session files. you can adjust how "old" a session file is before php will delete it, but if you want the session not to expire at all, youll need to do something else, its not what session are for.
consider wiritng all the data you want to keep to a database, or some other storage medium.
you could write your own session handler for php to use, and have it store the data in a db instead of using files and its built in garbage collection.
you could still use sessions, but also set a cookie w/ a very long lifetime, w/ an id in it so that when they come back on a later date, you can associate that id w/ thier previous data.
theres tons of info here
www.php.net/session