It's my original very simple script:
package Apache::StripSession;
use strict;
use Apache;
use Apache::Constants qw(:common);
use DBI;
sub handler {
    my $r = shift;
    my $dbh = DBI->connect('dbi:mysql:altboards', 'root', '');
    # Session
    return DECLINED unless $r->uri =~ /^\/session\/([a-zA-Z0-9]{32})(.*)/;
    warn "$1, $2";
    $r->subprocess_env(SESSION => $1);
    $r->uri($2);
    return DECLINED;
}
1;

When I try to get page from http://localhost/session/123343..12121/index
it work perfectly.
And this string has appeared in error.log -
"12345678901234567890123456789012, /index at ...."

But if I comment out string 'warn "$1, $2"; ' the same script with the same url 
doesn't work.
$2 is undefined and browser tell me something like "www.localhost could not be found 
..."
Why???

__END__

-----Original Message-----
From: "Raf" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Date: Fri, 27 Jun 2003 15:35:16 -0000 (GMT)
Subject: Re: Re[4]: Problem with PerlTransHandler

> 
> Sergey V. Stashinskas said:
> > Problem is not in connection with database.
> > When I try to connect then $2 regexp variable becomes undefined and
> > script can not redirect anywhere. ($r->uri($2)) But when script is not
> > connected with database all works perfectly and this variable has a real
> > defined value. I can not understand this ...
> 
> What are you actually getting in your logs?  Are you sure that it's even
> getting to $2?  My thought is this:
> 
> *  if you don't get a $dbh back, then under strict you should get a
> cock-up reporting that it can't run the method disconnect on an undefined
> reference.
> 
> Can't see why this would happen.  How you tried to dump the uri with a
> STDERR?  Noticed that you're from Russia, so perhaps it's some kind of
> character encoding/local problem, since you're matching against latin
> character classes?  Can weird character creep into your session string?
> 
> Just thoughts.  Final thought is running it through Apache::DB if you
> fancy building it.  Just a thought.
> 
> Cheers,
> 
> R.
> 
> 
> 
> 
> 
> 
> 
> 
> > Original source:
> > package Apache::StripSession;
> > use strict;
> > use Apache;
> > use Apache::Constants qw(:common);
> >
> > sub handler {
> >     my $r = shift;
> >
> >     my $dbh = DBI->connect('dbi:mysql:db', 'user', 'pswd');
> >     $dbh->disconnect;
> >     return DECLINED unless $r->uri =~
> > /^\/session\/([a-zA-Z0-9]{32})(.*)/;
> >
> >     $r->subprocess_env(SESSION => $1);
> >     $r->uri($2);
> >
> >     return DECLINED;
> > }
> >
> > 1;
> >
> > -----Original Message-----
> > From: "Raf" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Date: Fri, 27 Jun 2003 15:09:13 -0000 (GMT)
> > Subject: Re: Re[2]: Problem with PerlTransHandler
> >
> >>
> >> Sergey V. Stashinskas said:
> >> > If these lines are commented out then script is working ok.
> >> >
> >> > -----Original Message-----
> >> > From: <[EMAIL PROTECTED]>
> >> > To: "Sergey V. Stashinskas  "
> >> > <[EMAIL PROTECTED]>,<[EMAIL PROTECTED]> Date: Fri, 27
> >> Jun 2003 16:39:12 +0300
> >> > Subject: RE: Problem with PerlTransHandler
> >> >
> >> >>
> >> >> Have you tried to comment out the 2 DBI lines like this:
> >> >>
> >> >> #my $dbh = DBI->connect('dbi:mysql:db', 'user', 'pswd');
> >> >> #$dbh->disconnect;
> >>
> >> Can't find your original post, however try doing something like:
> >>
> >> $dbh->disconnect if ref($dbh);
> >>
> >> or:
> >>
> >> if (ref $dbh) {
> >>     $dbh->disconnect;
> >> else {
> >>     ## CHECK LOGS for this
> >>     print STDERR "\n Failed to connect \n";
> >> };
> >>
> >> Cheers,
> >>
> >> Raf
> >>
> >>
> >>
> >>
> 
> 
> 
> 

Reply via email to