The simplest solution is with Javascript. It accomplishes the same thing as pressing the back button in your browser.
I'm not a big fan of that solution (since I never trust javascript) but it can be done in one line of code so lots of people like it.
To do it with PHP, you have a few options:
You know the book id from the previous page because it was passed into this page as a variable. So you could build a link like:
<a href="info.php?book_id=<? print "$book_id"; ?>">Click here to go back</a>
If there are more variables needed for building the previous page than just the book id, you could pass them in or, as you said, write them to the session. Then, when you send them back to the previous page, you could pass back those same variables, or that page could read them from a session.
(As I said, I like the PHP solutions better than the JS because they are 100% cross browser compatible. But they are longer to code.)
Let's say someone performs a search and the search page requires variables: x, y, and z. So you're on the search page and you make a link to "More Information". You could pass x, y, and z to the more information page so that on that page when you build a "Back" link, you can pass back the values for x, y, and z.
Or, as you said, everytime a search is performed, you could write x, y, and z to the session. Then if you link to a "More Information" page, you can make a simple link back to the search page (without passing anything back). When the user arrives back at the search page, that page sees that no values were passed in the $_POST variable for x, y, and z so it checks the session. It finds them and displays the appropriate page.
That's how I'd do it, anyway.