Rasoul Hajikhani wrote:

> Folks,
> The apache::Request docs indicate that param can be used to set the
> query string. However,
> it fails when I do something like this:
> 
>               my $r           = Apache::Request->new(shift);
>               ...
>               my $host        = $r->hostname;
>                 my $uri         = $r->uri;
>                 my $params      = $r->parsed_uri->query;
>                 # does not seem to work!?
>               my $scheme      = $r->parsed_uri->scheme || 'https';
>                 $r->param('previous_uri' => "$scheme://$host$uri");
>                 $r->param('q_string' => $params) if ($params);
>                 $r->header_out(Location => "http://$host/login";);
>                 $r->status(REDIRECT);
>                 $r->send_http_header;
>                 return OK;
> 
> Can someone tell me why this is failing? I can not get previous_uri or
> q_string in my login module. 


the way you are thinking about it is fundamentally wrong - $r is the 
_current_ request object, so setting $r->param sets query string 
arguments for the current request only.

you need to look into the Apache::URI module, which can be used to 
create properly formed URI strings.


> 
> Also, $r->parsed_uri->scheme does not return anything back.


it won't - to create a self-referential URI use Apache::URI->parse($r)

HTH

--Geoff




Reply via email to