Is it possible to change the browser's address/location URL without Redirect?
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
Re: Is it possible to change the browser's address/location URL without Redirect?
That what's the approach outlined in 1). I was wondering if that network trip can be avoided. Thanks, Harry - Original Message - From: French, Shawn [EMAIL PROTECTED] To: 'Harry Zhu' [EMAIL PROTECTED]; Sent: Friday, August 09, 2002 11:49 AM Subject: RE: Is it possible to change the browser's address/location URL without Redirect? One option: If there's an erro in form 2, Save the user's form data in some session variables Then use a META HTTP-EQUIV=Refresh CONTENT=0; URL=/step2 tag to get the user's browser to redirect. Then populate the form with the data and error message you saved in his/her session object. There are obviously many other ways to do this... but if you're using some sort of session data structure, this is probably the easiest way to get it done. Shawn -Original Message- From: Harry Zhu [mailto:[EMAIL PROTECTED]] Sent: August 9, 2002 2:26 PM To: [EMAIL PROTECTED] Subject: Is it possible to change the browser's address/location URL without Redirect? 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
Re: Is it possible to change the browser's address/location URL without Redirect?
The question is not about how to make links relative to root. The purpose is to show correctly the user what the step he is at in the process. If no mistake, he would be taken to step 2, but since the data has error and he needs correct it, so I would like the browser indicating he is still in the step 1. Although it's not that important an issue. Did you mean javascript can change the URL text displayed in the (some version of) browser's address/location bar? I know it is used to display text in status. Noemally the use of Javascript to validate the data can almost eliminate the needing of such network trip, but not always. Thanks, Harry - Original Message - From: Andrew Ho [EMAIL PROTECTED] To: Harry Zhu [EMAIL PROTECTED] Cc: mod_perl List Sent: Friday, August 09, 2002 4:40 PM Subject: Re: Is it possible to change the browser's address/location URL without Redirect? Hello, HZI was wondering if that network trip can be avoided. The answer is no. You might be able to use JavaScript to do it on certain browsers, but I'm reasonably sure you can't do it on recent IE and Netscape browsers. Why do you want to do this? You could use base href/ or similar if your goal is just to make links are relative to a certain root. Humbly, Andrew -- Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED] Engineer [EMAIL PROTECTED] Voice 650-930-9062 Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101 --
Re: Is it possible to change the browser's address/location URL without Redirect?
Simple redirection does not do the same job, because the /step/1/error page is not a simple error page - I would like it to reload the same form in step 1 with the values filled and some message indicating what's to be correct. Looks like the network trip (redirect/refresh) can not be avoid. Then the session mechanism maybe better for the speed since it sends less data. Harry - Original Message - From: Peter Bi [EMAIL PROTECTED] To: Harry Zhu [EMAIL PROTECTED]; Sent: Friday, August 09, 2002 5:18 PM Subject: Re: Is it possible to change the browser's address/location URL without Redirect? It is the browser that controls the URL in the Address bar. So one has to make another call to get the URL refreshed. If you are worry about the speed, you may 1) return an error code in case of error 2) in Apache's httpd.conf, config that specific error to display /step/1/error A simply redirection does the same job. Peter - Original Message - From: Harry Zhu [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, August 09, 2002 11:26 AM Subject: Is it possible to change the browser's address/location URL without Redirect? 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
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
mod_perl PerlAccessHandler/PerlAuthenHandler question
I'm a verteran CGIer but a new mod-perl user. I have got the mod-perl running fine for the content handling. But when I try to step in to other stages like Authentication, and have trouble in setting PerlAccessHandler PerlAuthenHandler etc. If I put ###== Location /mpl/hello SetHandler perl-script PerlHandler Apache::Hello /Location ###== in the perl.conf file, it's ok. I got the expected from the browser. But when I changed above to ###== PerlModule Apache::AuthAnon Location /mpl/hello AuthName Anonymous AuthType Basic PerlAuthenHandler Apache::AuthAnon require valid-user PerlSetVar Anonymous anonymous|anybody SetHandler perl-script PerlHandler Apache::Hello /Location ###== and try to restart the server, I got Syntax error on line 9 of /usr/local/apache/conf/perl.conf: Invalid command 'PerlAuthenHandler', perhaps mis-spelled or defined by a module not included in the server configuration When I set up .htaccess in a directory test under DocumentRoot, ###== PerlAccessHandler Apache::GateKeeper PerlSetVar Gate closed ###== and try to access this directory, the server gives the Internal Error: /usr/local/apache/htdocs/test/.htaccess: Invalid command 'PerlAccessHandler', perhaps mis-spelled or defined by a module not included in the server configuration I can add use Apache::GateKeeper (); in the startup.pl and start the server without problem, so the module itself should be in the proper path for tyhe server to load. Any help on this will be apprieciated. Harry GreatLodge.com
problem compiling modperl2.0
I am trying to create a test environment for modperl2.0/apache2/perl5.8 under RedHat7.3. As root, I did the first step, download using the cvs to get the modperl-2.0, httpd-2.0 and apr, apr-util (placed in httpd-2.0/srclib). make make install is fine. I using rsync to get the Perl, and the 'make's are fine and linked to /root/bleedperl/bin/perl. The install LWP under the new perl is also fine. Now come to the modperl2.0: root /root/bleedperl/bin/perl Makefile.PL MP_AP_PREFIX=/root/httpd-2.0 Reading Makefile.PL args from ARGV MP_AP_PREFIX = /root/httpd-2.0 Configuring Apache/2.0.40-dev mod_perl/1.99_05-dev Perl/v5.8.0 And a bunch of the following !!! Unable to open /root/httpd-2.0/include/apr.h: No such file or directory Please help! Harry Zhu GreatLodge.com