名 前 
電話番号 
性 別 男性 女性
年 代 


【応募フォーム内容をブラウザに表示。フォーム種類・・・文字列・ ラジオボタン・チェックボックス。】 

【ソース】 form2.cgi 【解説】
  1. #!/usr/local/bin/perl
  2. #送られてくる文字列の長さ
  3. $length=$ENV{'CONTENT_LENGTH'};
  4. #長さ分だけ標準入力から読み込む
  5. read(STDIN, $buffer, $length);
  6. #文字列ごとに分割する
  7. ($shimei,$denwa,$seibetu,$nendai)=split( /&/ , $buffer);
  8. #フォーム名と内容に分割する
  9. ($name,$value1)= split( /=/ , $shimei);
  10. ($tel,$value2)=split( /=/ , $denwa);
  11. ($siyuu,$value3)=split( /=/ , $seibetu);
  12. ($nenbetu,$value4)=split( /=/ , $nendai);
  13. #フォームから送られたデータにスペースがあると、
  14. #プラス(+)に置き換えられるので、
  15. #スペースにしたままにする変換処理をする
  16. $value1=~ tr/+/ /;
  17. $value2=~ tr/+/ /;
  18. #フォームから送られたデータの特殊文字や日本語などは
  19. # % に続く2桁の16進数に置き換えられるので、
  20. #それを変換しなおす処理をする
  21. $value1=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
  22. $value2=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
  23. print "Content-type: text/html \n\n";
  24. print "<HTML><HEAD><TITLE>CGI-TEST</TITLE></HEAD> \n";
  25. print "<BODY> \n";
  26. print "名前 =$value1 \n";
  27. print "<BR><BR> \n";
  28. print "電話 =$value2 \n";
  29. print "<BR><BR> \n";
  30. if ($value3 eq "m"){print "性別 =男性\n";}
  31. elsif($value3 eq "f"){print "性別 =女性\n";}
  32. else {print "性別 =エラー\n";}
  33. print "<BR><BR> \n";
  34. print "年代 =$value4代\n";
  35. print "</BODY> \n";
  36. print "</HTML> \n";
  37. exit;
form1.cgi をベースに追加・変更した行だけを青字で表示

















19.性別と年代の項目は文字列ではないので、
  この処理は不要




25.性別と年代の項目は文字列ではないので、
  この処理は不要







34.EOFを使わない表記方法






41.「eq」は、=のこと。
  もしも代数value3の値が「m」とイコールだったら
  男性と表記する。
42.value3の値が「m」ではなく「f」だったら
  女性と表記する。
43.「m」でも「f」でもなかった場合は「エラー」表記する。
  
46.「年代」はチェックしたものによって、
  送る値をhtmlの方で設定してあるので
  そのまま名前や電話などと同じ表記でよい。