Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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?

share|improve this question
add comment

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.

share|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
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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