2013年2月27日 星期三

CGI的練習之怎麼接到GET的值

小練習: 用CGI送出一個form。
接到form get出來的值,並顯示在頁面上。

其實這個練習的成功非常的詭異,首先我是把檔案放在XAMPPcgi-bin裡面,檔名是ch01.cgi,但是用來解譯的perl是另外用activePerl裝的perl,而且cgi檔,打錯一行,後面就都不會執行。

執行頁面沒有特別的困難,就像平常在localhost一樣,只要在瀏覽器打上localhost\cgi-bin\ch01.cgi就可以成功執行,但若程式有問題,很容遇到Server Error...

ch01.cgi
 #!c:\perl64\bin\perl.exe -w  
 #上面這行表示用哪一隻程式來解譯  
 #有的書寫說,在window系統下有沒有這行都無所謂  
 #恩..不過在我的windows下,這行一定要有,如果忘記這行會顯示Server Error....  
 use CGI;  
 #use 表示使用後面的模組  
 print  "Content-type: text/html\n\n";  
 print  '<html>';  
 print  '<head>';  
 print  '<meta name="author" content="Kay Vogelgesang">';  
 print  '</head>';  
 print  "<body>This is my first CGI<br>";  
 print  "<form>  
 <input type='hidden' name='action' value='learn_perl'>  
 <input type='hidden' name='status' value='good'>  
 Please Enter your name:<input type='text' name='user'>  
 <input type='submit' value='送出'/></form>";  
 print  "<strong>以下是get的資料</strong><hr>";  
 my $query = CGI->new;  
 my %data = $query->Vars;  
 #get data use name=>value, this will "export" the form values  
  foreach my $param (keys %data) {  
    print "$param = $data{$param}"."<br>";  
  }  
 #純量變數(scalar)是$開頭 $query  
 #陣列(Array)是@開頭 ex:@myarray   
 #雜湊(Hash)是%開頭 ex:%hash  
 print  "<br>直接把\$query print出來是: <strong>" . $query ."</strong><br>";  
 print  "<br><strong>把個別的get欄位print出來</strong><hr>";  
 print  "GET的user值為". $data{'user'} ."<br>";  
 print  "GET的action的值為". $data{'action'} ."<br>";  
 print  "GET的status的值為".$data{'status'} ."<br>";  
  if ($data{'user'} ne ' '){  
   print "<h1>hello <span style='color:tan'>". $data{user} ."</span>,Welcome!</h1>";   
   #也可以這樣寫<h1>hello$data{user}</h1>,  
  }else{  
   print "<h1>please enter your name!</h1>";  
  }  
 
 print "</body></html>";  

要取的這個cgi送出去的get參數值
建立一個$query的變數,將CGI->new指定給$query
將$query->Vars指定給%data這個hash(雜湊)
接著再將%data foreach出來,可得所有get的值跟value

  • Demo 畫面 (未送出input值)


  • Demo 畫面 (送出input值後)





 才學疏淺,若有錯誤還麻煩糾正我一下,謝謝。

沒有留言:

張貼留言

若你看的文章,時間太久遠的問題就別問了,因為我應該也忘了... XD

Vue multiselect set autofocus and tinymce set autofocus

要在畫面一進來 focus multiselect 的方式: 參考: https://jsfiddle.net/shentao/mnphdt2g/ 主要就是在 multiselect 的 tag 加上 ref (例如: my_multiselect), 另外在 mounted...