Here's a "clunky" answer. Look over my article here.
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/A_2391-PHP-login-logout-and-easy-access-control.htmlIn practical terms, your session is going to live long enough for everything your client might want to do, unless what the client wants to do is login to the site, then abandon the computer and go to the opera, then come back and expect to still be logged in. That will not work.
Every new page load to the same web site (with some important limitations) effectively resets the cookie expiration time by extending it into the future. The default extension is about 24 minutes.
Cookies and browsers have unique interactions. Consider this: All instance of Firefox (windows, tabs, viewports) share the same cookie jar. You can have two browser windows logged in to the same web site. Very confusing to developers, but rare in practice. Window #1 sets a cookie, window #2 resets it and extends its time. The behavior is predictable, but impatient developers rarely think through what is happening to the cookies. Firefox gives you a good way to visualize the cookies - use it.
Now to the issues you identify. You want to stop a session after two hours (of activity?) or 30 minutes of inactivity. It doesn't work like that. Unless you go to the trouble to understand sessions in detail and perhaps write your own session handlers, your sessions will expire after 24 minutes of inactivity. The part about two hours is not applicable - each new use of a web page that contains session_start() will throw the timeout another 24 minutes into the future. Garbage collection is imprecise, but the cookie expiration is fairly dependable.
As to this,"don't refer me to the session guide on the PHP website" -- sorry, but it is the definitive man page reference. You need to understand it, and if you don't please post back here with specific questions.