According to php website, session support in PHP consists of a way to preserve certain data across subsequent accesses. This enables you to build more customized applications and increase the appeal of your web site. A visitor accessing your web site is assigned a unique id, the so-called session id. This is either stored in a cookie on the user side or is propagated in the URL. The session support allows you to register arbitrary numbers of variables to be preserved across requests.
Tapping onto the experience of programmers here, I would like to know what are the things that should be stored in $_SESSION and what are the things that should not. Example, is it a good idea to store data in a session to avoid repeated queries on the database?
Store only what you need to maintain state (ID’s, small piece of highly used data, etc).
Database results can be cached in an appropriate caching layer (memcached, APC, etc) if performance begins to suffer from query abuse.
I’d avoid storing complex structures in session that are otherwise located in other data storage areas (DB for example). Keep it simple.
Update
Another popular use and one I’ve used is to store interim data before processing. An example is a multi-page / wizard style form.