-まず最初に
--あんまり役に立たない内容なので期待しないことを推奨。
--ちょこちょこ更新していくつもりですが期待しないことを推奨。
--内容の精度に期待しないことを推奨。
--Linux・Unix用の箇所しかない(一部を除く)のでWindowsの人は期待しないことを推奨。
--これでも長いと思った人は(ry

-PerlというかCGI(Common Gateway Interface)
--について
     1. CGIというのはウェブサーバと外部プログラムとの間のルールです。
     2. CGIプログラムというのはCGIに従ってウェブサーバーに実行されるプログラムです。
     3. Perlというのはプログラム言語です。
     4. PerlはもともとCGIとはまったく無関係でした。
     5. でもPerlはCGIプログラムに向いているのでCGIプログラムによく使われます。 



-お約束
--Perlの一行目には必ず
    #!/usr/bin/perl
--と入力すること。
--これで実行に使うPerlの位置をしている。



-改行コードについての注意
--これを覚えとかないと死亡フラグ。
     1. WindowsとLinuxの改行コードは違う。
     2. 正確にはWindowsは2バイト、Linuxは1バイト
     3. 窓で書いたCGIを犬にそのままFTPで送る場合、正常に機能しない。
     4. しかしFTPをテキストモードにしてからCGIを送ると、この問題は解決する。



-パーミッションについて
--Linuxにはパーミッションというものがある。
     1.パーミッションはアクセス権を設定するものである。
     2.アクセス権には読み、書き、実行の三つがある。
     3.また、2進数で表すこともある。
     4.CGIのパーミッションの設定は、700が代表的らしい。(修正する気がないならセキュリティ上500でもいい気がする。)
     5.詳しくはWEBで!



-御託はいいからさっさと書いてみる
--プログラムではお約束のHello World!を書いてみる
     #!/usr/bin/perl
     
     print "Hello World";

--これで出力の部分は完成。
--でもこれだけじゃ動きません。



-HTTPヘッダについて
--CGIは何のデータ(HTMLやjpeg)を出力するかはきちんと決まってない。
--これでは、ブラウザ側に送られてきたデータが何のデータなのかわからない。
--なので、上のプログラムはこのままでは駄目。
--正しく動かすためには、正しいHTTPヘッダを自分で出力してあげないといけない。
--これを書くと

     #!/usr/bin/perl
     
     print "Content-type: text/html\n";
     print "\n";
     print "Hello World!";

--となる。\nは改行を表す。
--補足。HTTPヘッダの後には必ず空行を入れる。(print "\n"; のところ)
--まとめ
     1. CGIは最初に正しいHTTPヘッダを出力しないといけない。
     2. CGIでHTMLを出力するにはHTTPヘッダ「Content-type: text/html」が必要。
     3. HTTPヘッダの後ろには空行を出力する。 



-デバッグ機能
--Perlにはバグが起きていそうな箇所を示す機能がある。
--先ほどのコードにそれを追加すると

     #!/usr/bin/perl
     
     use CGI::Carp qw(fatalsToBrowser);
     
     print "Content-type: text/html\n";
     print "\n";
     print "Hello World!";

--となる。
--つまり、use CGI::Carp qw(fatalsToBrowser); を追加するとデバッグ機能が使えるようになる。


// IP:"126.60.107.119" TIME:"2014-03-24(<abbr class="week_day" title="月曜日">月</abbr>)00:09:38" REFERER:"http://157.7.130.26/" USER_AGENT:"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS