You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Rasoul Hajikhani <ra...@rhythm.com> on 2002/01/30 00:07:43 UTC
can not set param
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.
Also, $r->parsed_uri->scheme does not return anything back.
Thanks in advance.
-r
Re: can not set param
Posted by Rasoul Hajikhani <ra...@rhythm.com>.
Geoffrey Young wrote:
>
> 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
unless ($c->{userId} && $c->{user})
{
my $p_uri = $r->parsed_uri;
my $string = "previous_uri=" . $r->uri .
($r->args() ? "?" . $r->args() : undef);
$p_uri->query($string);
return FORBIDDEN;
}
This still fails to resolve the problem. Unless ofcourse I am not using
the right method.
-r
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
Re: can not set param
Posted by Geoffrey Young <ge...@modperlcookbook.org>.
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
Re: can not set param
Posted by clayton cottingham <dr...@telus.net>.
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.
>
> Also, $r->parsed_uri->scheme does not return anything back.
>
> Thanks in advance.
> -r
why not use $r->args ??
my %args = $r->args;
then just have to call your queries like
$args{Members_id_ext}
Re: can not set param
Posted by Rasoul Hajikhani <ra...@rhythm.com>.
Robert Landrum 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);
>
> I'm guessing that the original reference isn't being preserved.
>
> Try
>
> my $save = shift;
> my $r = Apache::Request->new($save);
>
Makes no difference... Still param or args does not set the query string
parameters.
> Just as a side note, I never dump these two together... I always
> keep a seperate $r and $apr, but that's just me.
>
> Rob
>
> --
> When I used a Mac, they laughed because I had no command prompt. When
> I used Linux, they laughed because I had no GUI.