I think it's far more dangerous to have it in the URL...
You have a table, "sessions" or whatever, in your database. It has a field for each variable you want to store in your session (and you might have to read up on serialisation if you'll be wanting to store things like arrays), and an additional field for storing your session ID. md5(time()) might do as a session ID.
You'll have to do something like
"SELECT * from sessions WHERE session_id='$session_id'"
to query the database for all fields where the session ID matches the one supplied in the URL (there isn't one? header('Location:login.php')😉. Maybe the session ID is an old one that someone pulled out of your cache or browser history, and isn't in the database any more: header('Location:login.php');. Maybe it is still in the database and you haven't cleared it out yet - they're now in your admin section.
With a successful query, get the field values, stick them into suitable variables, and you're under way.
You need to stick the session ID in all the links (and forms) in your admin section. I saw some Javascript on the documentation site that was said to do this automatically.
Clearing out the database is tricky - you need to write a substitute for PHP's garbage collection as well. Assuming there will only ever be one session at a time (there won't be multiple people using the admin session), a "DELETE FROM sessions" when some "logout" command is given ought to do the trick. Otherwise things can get stickier.