Variables in a script are always session based. This means "User1" will have its own iteration of a Global Variable and "User2" will have their own iteration of a Global Variable. One session would never be able to over-write another sessions global variable. See Set Variable••
I hope this helps!
Two common ideas:
1.) Use a session record that is created upon login and tied to the user. You can throw what ever fields you want into that session table. That form should be on layout for that session record. Upon exit migrate the data to another table.
2.) Create a table specifically for global fields. NEVER allow a record to be created in that table to avoid multi-user collisions. Those global fields will always be available regardless of what layout your on. Reset them as needed.
Both ideas apply equally to Pro, Go, WebDirect.