前回CGIを動かせるように設定をしてみましたが、
やはりサーバーとやり取りをするためには、リクエストを受けて処理することが必要です。
でも、デバッグするとき全部のinput要素のnamaなんか書いてられない・・。めんどくさい!
なので送られてきたものをすべて表示する処理をいろいろ調べて書いてみました。
今回はPerlとPythonの二つです。
以下のコードです。
[Perl編]
#!/bin/perl
use CGI;
my $cgi = new CGI;
my $ResultHTML ="";
my $ResultHTML .= "<div>\n<p>受信結果</p>\n";
my @Keys = $cgi->param;
# 全てのパラメータを取得する
foreach my $Key (@Keys) {
$ResultHTML .= "Form[".$Key."]:". $cgi->param($Key) . "<br />\n";
}
$ResultHTML .= "</div>";
my $html = <<'EOS';
Content-Type: text/html
<html>
<head>
<title>フォーム取得テスト</title>
</head>
<body>
<div>
<form action="./formrq-pl.cgi" method="post">
Text<br />
<input type"Text" name="Text" value="一行テキスト" ><br /><br />
Radio<br />
<input type="radio" name="Radio" value="radio0" checked="checked"/>ラジオ0<br />
<input type="radio" name="Radio" value="radio1" />ラジオ1<br />
<input type="radio" name="Radio" value="radio2" />ラジ2<br /><br />
Range<br />
<input type="range" name="Range" /><br />
ChackBox<br />
<input type="checkbox" name="Chack0" value="000" checked="checked"/> 001<br />
<input type="checkbox" name="Chack1" value="001" /> 001<br />
<input type="checkbox" name="Chack2" value="002" /> 002<br /><br />
SelectBox<br />
<select name="Select">
<option>Select0</option>
<option>Select1</option>
<option>Select2</option>
</select><br /><br /<br />
TextArea<br />
<textarea name="TextArea" rows="4" cols="40">複数行のテキストボックス</textarea><br /><br />
<button type="submit">Submitボタン</button>
</form>
</div>
EOS
print $html;
print $ResultHTML;
$html = <<'EOS';
</body>
</html>
EOS
print $html;
|
[Python編]
#!/usr/bin/python
# -*- coding: utf-8 -*-
from os import environ
import cgi
Forms = cgi.FieldStorage( environ=environ, keep_blank_values=True )
Keys = Forms.keys()
ResultHTML ="";
ResultHTML += "<div>\n<p>受信結果</p>\n";
# 全てのパラメータを取得する
for Key in Keys:
ResultHTML += "Form[" + Key + "]:" + Forms[Key].value + "<br />\n";
ResultHTML += "</div>";
html = '''Content-Type: text/html
<html>
<head>
<title>フォーム取得テスト</title>
</head>
<body>
<div>
<form action="./formrq-py.cgi" method="post">
Text<br />
<input type"Text" name="Text" value="一行テキスト" ><br /><br />
Radio<br />
<input type="radio" name="Radio" value="radio0" checked="checked"/>ラジオ0<br />
<input type="radio" name="Radio" value="radio1" />ラジオ1<br />
<input type="radio" name="Radio" value="radio2" />ラジオ2<br /><br />
Range<br />
<input type="range" name="Range" /><br />
ChackBox<br />
<input type="checkbox" name="Chack0" value="000" checked="checked"/> 001<br />
<input type="checkbox" name="Chack1" value="001" /> 001<br />
<input type="checkbox" name="Chack2" value="002" /> 002<br /><br />
SelectBox<br />
<select name="Select">
<option>Select0</option>
<option>Select1</option>
<option>Select2</option>
</select><br /><br /<br />
TextArea<br />
<textarea name="TextArea" rows="4" cols="40">複数行のテキストボックス</textarea><br /><br />
<button type="submit">Submitボタン</button>
</form>
</div>
'''
print html;
print ResultHTML;
html ='''
</body>
</html>
'''
print html;
|
作成したら適当な名前を付けて保存しておきましょう。
パーミッションの設定もお忘れなく!
それではアクセスしてみましょう。
以下のようなサイトが表示されます。
一回「Submitボタン」を押してみましょう!
フォームの下に送信結果が表示されます。
各項目のリクエスト結果が表示できましたね。
ご参考になれば!
0 件のコメント:
コメントを投稿