Well, imagine you have an authorisation system, and when people logon you put a var called 'logon_ok' in the session, and you give it a value of '1'.
In subsequent scripts. You'd check to see whether $logon_ok exists and contains the value '1'.
With register_globals=on, all GET/POST/SESSION and COOKIE vars are registered as globals. So if a hacker enters as a url:
www.yoursite.com?logok_ok=1
PHP will register 'logon_ok' as a global, your script will see that 'logon_ok' exists and contains the value '1', and treats the hacker as an authorized user.
With register_globals=off, none of the URL parameters are registered as globals, and the only way to get to the session_vars is through $_SESSION (or $HTTP_SESSION_VARS on older PHP versions) Now your script specifically checks wether 'logon_ok' exists as a SESSION variable, and only your script can put variables in sessions, so if 'logon_ok' exists in the session, you can be sure that your script put it there, and this person is indeed authorized.