in reply to Re: Re: CGI::Application design strategy
in thread CGI::Application design strategy

If you want to switch run modes in mid-stream your current run mode just has to call the runmode that you want.

There is never any need for a normal CGI::Application based app to use redirect headers to access another runmode unless the resource has actually moved (e.g. has a new URL)

Here is larsen's example modified updated to remove the redirect.

# Does nothing except printing the form. # Using sessions you can pass to it an error_message, # for example. # sub login + { my $self = shift; + my $tmpl = $self->load_tmpl( 'login' ); + return $tmpl->output(); + } sub login_update + { my $self = shift; + my $q = $self->query; # Fetch username and password from the form # if ( PASSWORD CORRECT ) { return $self->first_panel; } else { # It could store some useful info in a session, # for example the error message. # return $self->login; } # You have a problem if this return ever actually executed #return; }
--
Clayton

Replies are listed 'Best First'.
Re: Re: Re: Re: CGI::Application design strategy
by valdez (Monsignor) on Mar 02, 2004 at 22:35 UTC

    And can you tell me what happens when users hit reload on their browsers? If you redirect users, they will not be able to reissue a command by reloading the login_update run mode. Nice, isn't it? :)

    Ciao, Valerio

      I implement logins using returns and if you have properly factored your code so each run-mode doesn't do more than it absolutely needs to, there's no problem. Remember - until the user has successfully logged in, the user can only see one page - the login screen. So what if they hit reload?

      ------
      We are the carpenters and bricklayers of the Information Age.

      Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.