I am reading conflicting infromation in the on-line manual about sessions (which may be part of your problem).
First of all, Sessions are only meant to last for, well, a session. But the on-line manual also seems to indicate that you can save sessions across sessions, which is an oxymoron. It may just be my interpretation of the manual, which is about as clear as mud on many topics, dunno.
Ok, so you can can save a "session variable" with session_register($varname); But once the person leaves your website, this variable is toast. So I doesn't matter whether you set the variable "loginIPaddress" or not, once that person leaves your website.
If you don't want to use cookies, then the only way I can see around your issue there is to check their information against your database each time they access a page by using the REMOTE_ADDR data (which you obtained from the first page they visited). True, this is a DB hit for each page, but I don't think it will slow things down very much, if at all.
You might also try just simply setting a session variable to some value, any value, on the entry page. Then, if someone comes in the back door (tries to access another page without going thru the entry page) there will be no session variable and you can redirect them. Of course, once they are logged into your site, they will still be able to jump to any page they want, assuming they have its address.
Also, the manual lists over a dozen "session configuration options." So unless you are running your own server and have set all of these the way you want them, one of these may be killing you without you even knowing it. It's just a thought.
Programming can be so much fun. 😃