|
1.GETとは?
ここからがCGIの重要な部分です。
CGIにある数字を伝えて表示したいと思います。ここでは数字の3を伝えたいと思います。
CGIでなければキーボードで入力するのがいいでしょうが、あいにくウェブプログラムではそのようなことは出来ません。
というわけで一つ目に考えられるのがURLの中に伝えたい文字を含ませる方法です。
以下のようなURLになりました。
http://127.0.0.1/get1.bas?a=3
プログラムの名前と伝えたい文字がパッと見てわかるように?で区切りました。
後ろにa=3と書きました。
それではこれを受け取るプログラムを書いてみましょう
-get1.bas-
#!/usr/bin/scriba
import cgi.bas
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>"
print cgi::GetParam("a")
print "</body></html>" |
▼実行結果
aの値(内容)によって変わります
今は意味がわからなくても構いません。
URLの?以降にあるa=3の部分を、a=4に変更してみて、もう一度アクセスしてみてください。
表示される数字が4に変わりましたね。
http://127.0.0.1/get1.bas?a=4
それでは今度は?以降を全て消してみましょう。
http://127.0.0.1/get1.bas
undefと表示されましたね。
このプログラムは一度、自分で動かして確認してみてください。
今回のようにURLにデータを直接記入する方法をGETと呼びます。
2.プログラムの説明
get1.basを見ていきましょう。
2行目のimport cgi.basですが、これは利用者のブラウザなどから情報を受け取る場合、必要となります。
今回のようにCGIを作るようなときはとりあえず書く癖にして下さい。
cgi::GetParam()関数で、aの値を表示しています。
()ないを"b"に変更することでbの値を受け取れます。
それでは入力した数字で掛け算するようなプログラムを作ってみましょう。
-get2.bas-
#!/usr/bin/scriba
import cgi.bas
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>"
print cgi::GetParam("a")*cgi::GetParam("b")
print "</body></html>" |
▼実行結果
aとbの値(内容)によって変わります
cgi::GetParam("a")*cgi::GetParam("b")の値(内容)を掛け算してprintで表示します。
http://127.0.0.1/get1.bas?a=5&b=6とすると5×6で30が表示されます。
3.IF命令と組み合わせて表示する内容を変えよう
-get3.bas-
#!/usr/bin/scriba
import cgi.bas
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>"
IF cgi::GetParam("data")>0 THEN
print "dataは0より大きいです<br>"
print "dataの中身は",cgi::GetParam("data"),"です"
ELSE
print "dataの中身は0又は0以下です。"
print "dataの中身は",cgi::GetParam("data"),"です"
END IF
print "</body></html>" |
▼実行結果
dataの値(内容)によって変わります
data=1の場合は以下の通りです。
一回は必ず実行してみて下さい。
このようにcgi::GetParam()関数は変数と同じ感覚で利用できます。
4.確認プログラム
二つの数字を受け取り、それぞれ足し算・引き算・掛け算・割り算した結果を表示しましょう。
-get3.bas-
#!/usr/bin/scriba
import cgi.bas
A=cgi::GetParam("a")
B=cgi::GetParam("b")
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>"
print A,"+",B,"=",A+B,"<br>"
print A,"-",B,"=",A-B,"<br>"
print A,"*",B,"=",A*B,"<br>"
print A,"/",B,"=",A/B,"<br>"
print "</body></html>" |
▼実行結果
aとbの値(内容)によって変わります
a=6 b=2の場合は以下の通りです。
先にA=cgi::GetParam("a")で変数にしているところがポイントです。
print A,"+",B,"=",A+B,"<br>"はAの値と+記号、そしてBの値と=記号を表示し、
A+Bを計算した結果を表示します。最後に<br>で改行です。
5.GETの説明
GETはURL中に入れるものと説明しました。
とても簡単に使える反面、GETには以下のデメリットがあります
|
▼文字制限は通常255バイト
URLの長さの制限は基本的にありません。
ですが、ブラウザによってはあまり長いURLは扱えないものもあるそうです。
目安ですが、URLは255バイト以下がいいでしょう。1バイト=半角1文字なので255文字という事になります。
ちなみに255文字のURLのサンプルを書いてみました。
http://127.0.0.1/get1.bas?a=51232&b=624242&c=12345&d=1234567890&e=1234567890&12454884&
datadata=445455&data2=54645555&sampleurl=111111&mes=256byte-is-very-very-very-very-longurl&
message2=madakayo-oi-&message3=madadayooi&message4=mousukosidaze-baby&str=end
う〜ん、結構長いですね。でも掲示板のコメント欄のような事は無理ですね。
|
|
▼URLなので通信内容が見えてしまう。
URLなので通信内容が簡単に見えてしまいます。また、履歴にも残ります。
記録されたくない重要なデータの送信にはちょっとまずいです。 |
これらの問題は次項で説明するPOST方式を使うことにより解決します。 |
|