2013-02-27 46 views

回答

0

腳本名稱後面的URL部分在$ ENV {PATH_INFO}中傳遞給您的perl程序。所以,你可以創建你叫modulerunner一個Perl腳本,您就可以使用「http://whatever.host/modulerunner/Top/Actual/method」的網址撥打:

my $arg=$ENV{PATH_INFO};  <-- contains Top/Actual/method 
my @arg=split("/", $arg);  <-- [ "Top", "Actual", "method" ] 
my $method=pop @arg;   <-- removes "method", "Top" and "Actual" remain in @arg 
my $modules=join("::", @arg); <-- "Top::Actual" 
my $call="$modules->$method()"; <-- "Top::Actual->method()" 
eval $call;      <-- actually execute the method 

但是,我不會在所有建議這一點 - 它打開了太多的安全漏洞,允許您的網站訪問者可以在任何模塊中調用任何perl函數。所以,除非你在自己的服務器上做這個沒有連接任何其他的服務器,否則我只會去做一個非常無聊的後續級聯。

$p=$ENV{PATH_INFO}; 
if  ($p eq "Top/Actual/method") { Top::Actual->method(); } 
elseif ($p eq "Other/Module/function" { Other::Module->function(); } 
else { 
    print "<font color=red>Don't try to hack me this way, you can't.</font>\n"; 
} 

哦,不使用<字體>標籤ONY任何生產要麼;)