佐賀大学 理工学部知能情報システム学科 講師 大月 美佳 CGIプログラミング基礎 佐賀大学 理工学部知能情報システム学科 講師 大月 美佳
今回の趣旨 CGIプログラミングをする上で必要な 基礎的な事項を学習する 質問は随時ご自由に 2003年1月28日 CGIプログラミング基礎
Webの機構 Webクライアント Webサーバ インターネット コンピュータ (ケータイなども) HTML文書 など 静的もしくは ページくれ インターネット どこかな? コンピュータ (ケータイなども) HTML文書 など ページだよ 静的もしくは 動的なページ 通信プロトコル:HTTP 2003年1月28日 CGIプログラミング基礎
Webの規格 標準化組織:W3C HTTP, HTML(XHTML), XML, etc. http://www.w3c.org/ http://www.w3.org/Consortium/Translation/Japanese →参考資料① HTTP, HTML(XHTML), XML, etc. 2003年1月28日 CGIプログラミング基礎
通信プロトコル:HTTP HTTP(HyperText Transfer Protocol) Webクライアント・サーバ間の言語 リクエストごとにコネクションを確立し 1回のデータ交換を終了するたびに接続を解除 GET, POST, HEAD, PUT, … 拡張HTTP, HTTP-KeepAlive データ通信が平文→暗号化が必要 HTTPS, SHTTP 2003年1月28日 CGIプログラミング基礎
記述言語:HTML(XHTML) HTML(HyperText Markup Language) XML対応→XHTML WWWでもっとも一般的な記述言語 HTMLで書かれた文書をHTML文書という 構造化文書記述言語SGMLの一種 構造情報、レイアウト情報が混在 XML対応→XHTML 構造情報とレイアウト情報を分離 現在移行期間 2003年1月28日 CGIプログラミング基礎
XML XML 構造化文書記述言語 参考URL: SGMLの後継 任意の文字データの記述に使用可能→DB http://www.xml.org/ SGMLの後継 より柔軟により簡単に 関連記述能力の強化 2003年1月28日 CGIプログラミング基礎
対話型ページの実現 動的コンテンツ クライアント側で実行 サーバ側で実行 プログラムにより動的に生成されるもの JavaScript, Applet, 他プラグイン サーバ側で実行 SSIとCGIのどちらかで実現 ユーザとの対話→CGI 2003年1月28日 CGIプログラミング基礎
動的コンテンツ作成手法:SSI Server Side Include(SSI) 部分的な動的コンテンツの生成用 例: Apache設定 システム時刻やファイル更新日の取得など ユーザからの入力は不可能 例: <!--#config timefmt="%y/%m/%d %H:%M" --> <!--#flastmod file="index.html" --> Apache設定 Options Includes または IncludesNOEXEC AddType text/html .shtml AddHandler server-parsed .sthml 2003年1月28日 CGIプログラミング基礎
動的コンテンツ作成手法:CGI Common Gateway Interface(CGI) WebサーバーとWebアプリケーションとの間の通信の共通インターフェイス ユーザからの入力 →フォームとの連携 <form action=“aaa.cgi" method="post“> <input type=“text” name=“Name” value=“Please input your name”> <input type=“submit” name=“SUBMIT” value=“SUBMIT”> </form> Apache設定 Options ExecCGI AddType application/x-httpd-cgi .cgi AddHandler cgi-script .cgi 2003年1月28日 CGIプログラミング基礎
CGIの機構 Webサーバ Webクライアント CGI HTTP プログラム ページくれ 呼び出し 出来たよ ページだよ 2003年1月28日 CGIプログラミング基礎
CGIを介したデータ授受 GET POST 環境変数 標準入力 標準出力 +ヘッダ情報 プログラム Content-type: … GET /test.cgi?n1=v2&… または POST /test.cgi … GET POST 環境変数 標準入力 標準出力 +ヘッダ情報 プログラム Content-type: … <空行> データ 2003年1月28日 CGIプログラミング基礎
CGI設置に関する注意事項 「セキュアなWebサーバーの構築と運用」 http://www.ipa.go.jp/security/awareness/administrator/secure-web/ →参考資料② 2003年1月28日 CGIプログラミング基礎
CGIの連携言語 プログラミング言語なら何でも スクリプト言語 上級言語 書きやすい、文字処理が得意 Perl, PHP, Ruby, Python, Tcl, … 上級言語 学習は難しい、実行速度は速い C/C++(C#), Java, Pascal(Delphi), … 2003年1月28日 CGIプログラミング基礎
Perl 参考URL: 特徴: Apache設定 優れた正規表現記述能力 文字処理に特化 膨大なライブラリの蓄積→CPAN 通常のCGI設定 mod_perl関連 2003年1月28日 CGIプログラミング基礎
PHP 参考URL: 特徴: Apache設定 日本PHPユーザ会 HTMLに直接埋めこみが可能 CGIとの親和性が高い mod_php関連 http://www.php.gr.jp/ 特徴: HTMLに直接埋めこみが可能 CGIとの親和性が高い Apache設定 mod_php関連 AddType application/x-httpd-php .php など 2003年1月28日 CGIプログラミング基礎
データの保存手段 プレーンテキスト データベース 小規模、プロトタイプなら十分 任意, CSV, XML, … 大規模なものには 簡易(db), RDB(SQLDB), OODB, XMLDB, … 2003年1月28日 CGIプログラミング基礎
XMLデータとの連携 HTML・XML文書のためのAPI 参考:http://www.atmarkit.co.jp/fxml/index.html 柔軟な操作→DOM XML文書の汎用モデル(オブジェクト指向) 参考: http://www.doraneko.org/misc/dom1/introduction.html 単純大規模な処理→SAX 簡単な構文解析ツール 本家: http://www.saxproject.org/ 2003年1月28日 CGIプログラミング基礎
SQLDBとの連携 フリーのSQLDB 言語との連携 mySQL: 海外で優勢 PostgreSQL: 日本語の文献が多い Perl: DBI.pm(汎用)、Pg.pmなど PHP: PHPLIB、各DB用インターフェース Java: JDBC(汎用)、ODBC(OO汎用) 2003年1月28日 CGIプログラミング基礎
Apache httpdの起動 /etc/apache/httpd.confの設定 /etc/init.d/apache start SSI, CGIの設定 mod_php, mod_perlまわり 他色々→参考資料③ viの使用法→参考資料④ /etc/init.d/apache start 2003年1月28日 CGIプログラミング基礎
PHPプログラムサンプル <html> <head><title>Test PHP</title></html> <body><h1>Test PHP</h1> <form method="POST" action="test.php"> <input type="TEXT" name="name" size="20" /> <input type="SUBMIT" name="TEST" value="TEST" /> </form> <hr> <p>Input: <?php print $name; ?></p> </body></html> 2003年1月28日 CGIプログラミング基礎