フォームを使ってデータをPOSTしてみよう!

| 2 Comments | 0 TrackBacks | このエントリーをはてなブックマークに追加 このエントリーのはてなブックマーク件数

こんにちは!


今日はperlを使って、フォームからのポストのやり方を解説しようと思うよ!一番したにコードを張っておいたので、そのソースの解説をするよ。


作ってるのはこれ

解説

準備

最初の行は、perlのある場所をしていしていますね。もしかしたら、あなたの場合だと、#!/usr/local/bin/perl などと、他のパスにあるかもしれません。

#!/usr/bin/perl 

使うモジュールを読み込みます。strict, warnings はエラーを作った場合に教えてくれるから、書いています。 CGI は、フォーム関連の作業をするときに役にたつモジュールです。

use strict;
use warnings;
use CGI;

HTTPヘッダーしょり

httpへの出力を、$cgi->header() という関数で作ることができるよ。

文字コードなどの指定もできて、今回は utf-8を指定しています。

my $cgi = CGI->new();
print $cgi->header( -charset => 'utf-8' );

きも

nameという値が取れればという処理をしています。取れるということは、フォームからデータをPOSTしたってことですね。


それで、取れた場合、プリントアウトしています。htmlのタグとかを、フォームに入れることができてしまうと、タグが壊れたりするので、escapeHTMLというモジュールで、タグをエスケープするようにしています。

if ( $cgi->param('name') ) {
    my $name = $cgi->param('name');
    $name = $cgi->escapeHTML($name);
    printf( 'あなたのナマエは<b>%s</b>ですね', $name );
}

これは、最初のフォームを表示してる部分です。<DATA> をprintすると、

__END__以下に書いた部分がそこに入ります。便利ですね。

else { 
    print <DATA>;
}


__END__
<html>
<head>
<title>POST Sample</title>
</head>
<body>
    <h1>ポストしようぜ!</h1>
    <form method="post">
        ナマエ : <input type="text" name ="name"><br>
        <input type="submit" value="ポストするぜ">
    </form>
</body>
</html>

まとめ

簡単に違うページに、データを送ることができましたね。実際、複雑なデータを次のページになげたりしてるのも、ただ数が多かったりするだけで、同じような仕組みでできています。


perlで動きのある、webサイトを作るのは結構簡単だったりします。

プログラミングは、難しいと思ってるあなた、以外と簡単なので遊んでみてはどうでしょうか?

全コード

#!/usr/bin/perl 

use strict;
use warnings;
use CGI;

my $cgi = CGI->new();
print $cgi->header( -charset => 'utf-8' );
if ( $cgi->param('name') ) {
    my $name = $cgi->param('name');
    $name = $cgi->escapeHTML($name);
    printf( 'あなたのナマエは<b>%s</b>ですね', $name );
}
else { 
    print <DATA>;
}

__END__
<html>
<head>
<title>POST Sample</title>
</head>
<body>
    <h1>ポストしようぜ!</h1>
    <form method="post">
        ナマエ : <input type="text" name ="name"><br>
        <input type="submit" value="ポストするぜ">
    </form>
</body>
</html>

No TrackBacks

TrackBack URL: http://perl-mongers.org/MT/mt-tb.cgi/55

2 Comments

実行してみたら、
> print ;
のところで「DATAハンドラなんて開いてないよ」というエラーが出てしまいます。

こんにちは!ご指摘ありがとうございます。

環境が違うとうまくいかなかったりするのかなぁ >_<

とりあえず、ヒアドキュメントを使うとかでしょうか。

my $data =<<"__HTML__";
hoge hoge
__HTML__

print $data;

Leave a comment

About this Entry

This page contains a single entry by tomyhero [livedoor.com] published on June 10, 2008 11:08 PM.

CPAN::Mini と glastree をつかって CPAN のデイリースナップショットを作ろう! was the previous entry in this blog.

実用! Perlで少しでもSBMのブックマーク数を多く見せる is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Categories

Pages

Creative Commons License
This blog is licensed under a Creative Commons License.
Powered by Movable Type 4.21-en