Thanks for your suggestions - I've had a look at the MVC pattern but it all seemed a bit too complex for what I want to do, at least for now. Perhaps something to learn for later, although a pity I wasn't able to find a really straightforward introduction to setting up a bare-bones MVC site.
What I have ended up doing was implementing a rather half-hearted attempt at OOP. I have two classes, currentPage and user. I also have a subclass of user called currentUser, which I have implemented as a 'singleton'. This means I can easily access the currentUser properties globally using, for example:
currentUser::singleton()->loggedIn
or
currentUser::singleton()->userName
Everything else is procedural. On second thoughts, however, I can't really see the advantage of using these classes intermittently and will probably end up going back to a fully procedural model, using the user and page properties as global variables.
If only there were a way of using include within class definitions so you could split the code up into different files, for ease of editing...