2010-05-08 62 views
0

好吧,我承認是一名設計師,我不太瞭解數據如何從表單中的服務器處理。 (基本上是整個編程部分)。基本上我有一個文本字段,用戶鍵入類似「蘋果」的東西,這會發送到服務器,然後顯示我在iframe目錄中的apple.html頁面。如果任何人都可以告訴我如何在PHP腳本或Perl中做到這一點,將非常感謝!我認爲這是一個好的開始,它比這更復雜...我後來必須將「蘋果」轉換爲類似2321的東西,並顯示2321.html。Web表單/ CGI腳本:用戶輸入「word」,IFrame顯示「word」.html

如果任何人都可以找到這樣做的CGI腳本,謝謝!

回答

1

以下是用Perl編寫的完整的可用CGI程序。它完全符合你的要求。除了編號爲水果的結果文件外,如果查找不成功或者用戶根本沒有輸入水果,還需要一個後退文件sorry-no-such-fruit.html

#!/usr/bin/perl -T 
use strict; 
use warnings; 
use CGI(); 

my %fruit_codes = (
    apple => '2321.html', 
    banana => '1234.html', 
    coconut => '8889.html', 
); 

my $c = CGI->new; 
my $fruit_parameter = $c->param('fruit_name'); 
my $iframe_document; 

if (defined $fruit_parameter and exists $fruit_codes{$fruit_parameter}) { 
    $iframe_document = $fruit_codes{$fruit_parameter}; 
} else { 
    $iframe_document = 'sorry-no-such-fruit.html'; 
} 

$c->header('application/xhtml+xml'); 

print <<"END_OF_HTML"; 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>Fruits</title> 
    </head> 
    <body> 
     <form action="fruits.cgi"> 
      <fieldset> 
       <label for="fruit">Name of the fruit:</label> 
       <input id="fruit" name="fruit_name" type="text" /> 
       <input type="submit" /> 
      </fieldset> 
     </form> 
     <iframe src="$iframe_document"> 
      <a href="$iframe_document">resulting fruit</a> 
     </iframe> 
    </body> 
</html> 
END_OF_HTML 

1; 

如果要修改這個計劃,我給你的最重要的安全忠告:不要輸出用戶提供的輸入(在這種情況下,$fruit_parameter)不變。這可能會被濫用於至少跨站腳本。請一位專家程序員尋求幫助。

+0

感謝daxim,我剛剛注意到我的主機不允許Perl,除非我付錢...你能提出一種方法,我可以在PHP中執行此操作嗎?有什麼辦法可以聯繫你關於上面的代碼嗎? – Haskella 2010-05-15 04:20:46

+1

我不做PHP。 – daxim 2010-05-15 18:43:29