On Sun, Jan 11, 2009 at 10:33:30AM +1000, Murray wrote: > Hi All, > > I'd like to reference the value of a variable in a class that called the > current piece of code via a require_once. > > In essence, I have a 'front controller' class that builds the page to be > displayed depending on several criteria. > > One issue I'm having is that when a user logs out of my application, I > destroy the cookie that indicated the user was logged in during my preRender > process, and then go onto display the 'logged out' page. Unfortunately, I > have a page element that indicates whether the user is logged in or not, and > I assume because the cookie destruction is being sent down in that page > request, when that page renders it still appears as if the user is logged > in, because the cookie still exists until after that page is rendered. > > So, I thought perhaps as part of my logout routine, I could set a variable > that my 'are you logged in or out' code could check and use to override > whether or not it displays the 'login' url or the 'logout' url. > > I thought that in that code I should be able to check the value of a public > variable that is in my front controller class, but it appears I can't? > > So, pseudo chain of processing would be something like this: > > - call index.php > - instantiate front loader class > - perform pre-render processing, if logging out, set public variable in > class to true > - call actual page to be rendered via require_once > - in page being rendered, call function from separate file that displays > 'login / logout' url > - in that function test public variable in front controller class to see if > true > - if true, regardless of whether or not the cookie still 'appears' to exist, > display 'login' url because user has logged out > > However, am I right in thinking that the function that displays the login / > logout url is actually unaware of the existence of the front controller > class at the point at which it is being called? > > M is for Murray I'm not quite sure why you don't force the login/logout page to use the front controller. Here's how I do it: I set various variables, and check the login status (I use $_SESSION variables to hold user ID and encrypted password). If the user is not logged in, I force the controller to be the login controller, regardless of whatever page the user *wants* to display. Then I go ahead with instantiating the controller, in this case, the login controller. So essentially, if the user is logged in, I go ahead and instantiate whatever controller they specify. But if they're not logged in, I force the login controller to be the one which is instantiated. (In my case, the "front controller" isn't really a class as other controllers are. It's just a bunch of routines and function calls in index.php.) Does that make sense? Paul -- Paul M. Foster -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php