mod_perl provides a way to run perl scripts in httpd.conf:

<perl>
...scripts goes here...
</perl>

How do I configure httpd.conf so that scripts inside <perl></perl> only get run if there's a flag parameter in the querystring?

link|improve this question

45% accept rate
feedback

1 Answer

Use Perl to evaluate the query_string and then use an if statement to skip the rest if the parameter is not set.

Perhaps something like this*:

<perl>
     if (length ($ENV{'QUERY_STRING'}) > 0){
           $buffer = $ENV{'QUERY_STRING'};
           @pairs = split(/&/, $buffer);
           foreach $pair (@pairs){
                ($name, $value) = split(/=/, $pair);
                $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
                $in{$name} = $value; 
           }
     }
     if (defined $in{'flag'}){
          #Your Code here
     }
</perl>

*there might be other ways to break up the query_string, here's where I got my example.

link|improve this answer
It seems it's not per request,it's only loaded once when Apache starts up... – linux Jul 20 '11 at 6:52
it works only in CGI mode,which is not the case for mod_perl. – kernel Jul 21 '11 at 11:38
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.