Looks like my explanation is too long or too bad.
The simple idea is in page step 1, after the

<form action=/step/2 method=post>...</form>

submitted, I want the browser show something
http://www.example.com/step/1/error, instead of
http://www.example.com/step/2,
if there is a need for user to correct the data submitted.

It might be accomplished by using one of the approaches outlined below, but
I was wondering if there's other way that can save the overhead of the
write/read or resend the data, and the re-process. Probably not much we can
do if the URL displayed in the browser's address/location bar depends only
on the action value of the form submitted, not based on the server response?

Harry



----- Original Message -----
From: "Harry Zhu" <[EMAIL PROTECTED]>
To: "mod_perl list" <[EMAIL PROTECTED]>
Sent: Thursday, August 08, 2002 4:22 PM
Subject: Can I change the browser's address/location?


> Suppose I have a generic content handler to handle requst
> /step/1, /step/2, ..., /step/n
>
> <Location /step>
>       SetHandler perl-script
>       PerlHandler MyHandler
>
> </Location>
>
> #MyHandler.pm
> package MyHandler;
> sub handler {
>   my $r=shift;
>   my $step = substr($r->path_info(),1);
>
>   #do something before fetch the content
>
>   #fetch content: usually include a form that will assign action
> /step/($step+1)
>
> }
>
> So if everything goes well, the user will follow through from step 1, step
> 2, until fnish.
> Now if in the "#do something ..." part, something is wrong, it will
usually
> require user go back to the same step, for example, to fill the form
again.
> The way my old cgi script does is just generate the form with prefilled
> value plus some error message indicate what's wrong. It works ok but the
> browser location will show /step/($step+1) while it actually is
/step/$step.
> Now that I am working it on mod-perl I thought I should be able to do
> something about it. I briefly browsed the 2 mod-perl books (eagle,
> cookbook), and could not found a simple solution yet  (or I missed it?). I
> was think using one of the folowing might work:z
> 1) save the request data in a temp file and redirect or http-refresh to
> /step/$step?$session_id or /step/$step/error?$session_id
> Remember the content is dynamic and depend on the input form data, so
simple
> redirect may not work.
> Looks like Apache will not post the form data when redirect with Location?
>
> 2) print a short form with hidden data and assign action=/step/$step/error
> then submit right away (onload=form.submit()?)
>
> Does anybody have a simple solution, e.g. without redirect? Is it possible
> to change the URI showing in the browser's address/location bar?
>
> I would appreciated if somebody can pointer me to the right direction.
>
> Harry
>
>


Reply via email to