一 般 的 なWebアクセス Webサーバ バ レスポンス HTML ファイル HTTPリクエスト 画 像 ファイル Webブラウザ あらかじめ 用 意 されたリソースしか 提 供 できない Webアプリケーション Webサーバ バ レスポンス HTTPリクエスト HTML Webブラウザ ページを 動 的 に 生 成 プログラム 実 行 データベース 操 作
Webアプリケーション 掲 示 板 検 索 エンジン ネットバンク ショッピングカート Webメール 地 図 検 索 ブログ Webアプリの 実 行 形 態 Webサーバで 実 行 = サーバサイド データベースの 操 作 等 本 格 的 なプログラムを 実 行 可 能 ブラウザの 種 類 バージョンに 依 らないシステム 構 築 が 可 能 アクセスが 集 中 したときのサーバ 負 荷 が 高 い 技 術 名 称 CGI PHP JSP&サーブレット JSF ASP.NET 開 発 言 語 Perl Ruby C 等 PHP Java Visual Basic C# 等 ブラウザで 実 行 = クライアントサイド アニメーション 実 行 入 力 チェック 等 軽 度 な 処 理 が 多 い ブラウザの 種 類 バージョンによって 動 作 が 異 なる 可 能 性 技 術 名 称 スクリプト ダウンロードモジュール 開 発 言 語 JavaScript Flash Javaアプレット
JavaScriptとPHP どちらも HTMLの 中 にプログラム 記 述 を 埋 め 込 む JavaScript ただいまの 時 刻 は <script type= text/javascript > now = new Date(); document.write(now); </script> です PHP ただいまの 時 刻 は <?php print date(r);?> です <script> </script> 2010/07/09 13:10:25 ブラウザが 実 行 (PHP in HTML) <?php?> (HTML) 2010/07/09 13:10:25 サーバが 実 行 PHP 実 行 エンジン フォーム 情 報 の 利 用 (1) データを 入 力 させるページ(このページ)は HTMLのみで 記 述 されている フォームを 利 用 するための 枠 組 み (form 要 素 ) データが 送 信 された 際 に サーバで 実 行 されるプログラムファイル 名 <form method= get action= output.php > (ここに 入 力 用 の 部 品 要 素 を 記 述 ) </form> 部 品 の 種 類 についてはHTMLリファレンス 参 照 <input type= text name= namae size= 30 > データを 送 信 するボタン 部 品 の 種 類 部 品 固 有 の 名 前 <input type= submit value= 送 信 > type は 必 ず submit ボタンに 表 示 する 文 字 列
フォーム 情 報 の 利 用 (1) <input type= text name= namae size= 30 > この 内 容 で 送 信 すると namae=miyahara+kazuhiro というデータが リクエストメッセージによって サーバに 送 られる リクエスト / レスポンス WWW 説 明 スライド( 情 報 処 理 論 )より 1 リクエストメッセージの 作 成 2 リクエストメッセージの 送 信 3 (レスポンス 待 機 ) 4 レスポンスメッセージの 受 信 5 レスポンスメッセージの 解 析 6 必 要 な 処 理 の 実 行 タグを 解 釈 し 表 示 画 像 などを 取 得 のためのリクエスト 開 始 Webサーバ Webブラウザ 1 (リクエスト 待 機 ) 2 リクエストメッセージの 受 信 3 リクエストメッセージの 解 析 4 適 切 なプログラムへの 処 理 依 頼 5 プログラムから 結 果 を 取 得 6 レスポンスメッセージの 作 成 7 レスポンスメッセージの 送 信
リクエストメッセージ WWW 説 明 スライド( 情 報 処 理 論 )より http://crane.nsc.nagoya cu.ac.jp/class/system.html を 取 得 リクエストライン( 先 頭 の1 行 ) GET /class/system.html HTTP/1.1 Accept: application/x ms application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x ms xbap, application/x shockwave flash, application/vnd.ms excel, application/msword, application/vnd.ms powerpoint, powerpoint */* Accept Language: ja JP User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729; Media Center PC 6.0; HPDTDF) Accept Encoding: gzip, deflate Host: crane.nsc.nagoya cu.ac.jp Connection: Keep Alive リクエストライン サーバへのリクエストを 記 述 GET /class/system.html HTTP/1.1 (メソッド= 処 理 ) (URL=パス) (プロトコルバージョン) ヘッダ ヘッダ 名 前 : 値 という 形 式 で 付 加 的 なデータを 記 述 フォーム 情 報 の 利 用 (1) データはリクエストメッセージによってサーバに 送 信 namae=miyahara+kazuhiro メソッドは2 種 類 Webサーバ GETメソッド :リクエストURLのクエリとして 渡 す POSTメソッド :リクエストメッセージのボディとして 渡 す
URL : 補 足 WWW 説 明 スライド( 情 報 処 理 論 )より クエリ :ブラウザからサーバにデータを 渡 す http://www.google.co.jp/webhp?hl=ja&q=nagoya スキーム ホスト 名 パス クエリ ファイル 名 の 省 略 index.html index.htm index.php : 最 も 一 般 的 か? : 拡 張 子 が3 文 字 だった 時 代 の 名 残 : PHPプログラムを 含 んだHTMLファイル リクエストメッセージ ブラウザからサーバへ 送 信 されるリクエスト リクエストライン( 先 頭 の1 行 ) GET /class/system.html HTTP/1.1 Accept: application/x ms application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x ms xbap, application/x shockwave flash, application/vnd.ms excel, application/msword, application/vnd.ms powerpoint, powerpoint */* Accept Language: ja JP User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729; Media Center PC 6.0; HPDTDF) Accept Encoding: gzip, deflate Host: crane.nsc.nagoya cu.ac.jp Connection: Keep Alive (ヘッダから1 行 空 けてボディが 続 くがたいていは 空 ) ヘッダ ボディ リクエストライン サーバへのリクエストを 記 述 GET /class/system.html HTTP/1.1 (メソッド= 処 理 ) (URL=パス) (プロトコルバージョン)
GET (リクエストライン) (ボディは 空 ) (ヘッダ) リクエストメッセージ POST (リクエストライン) (ヘッダ) (ボディ) リクエストメッセージ
フォーム 情 報 の 利 用 (1) データはリクエストメッセージによってサーバに 送 信 namae=miyahara+kazuhiro メソッドは2 種 類 GETメソッドド POSTメソッド $_GET[ 部 品 の 名 前 ] として 参 照 $_POST[ 部 品 の 名 前 ] として 参 照 これを 処 理 するPHPプログラムを 記 述 <?php print($_get[ namae ]); Miyahara?> Kazuhiro 実 行 結 果 をHTML 化 フォーム 情 報 の 利 用 (2) このページはHTMLのみで 記 述 フォームを 利 用 するための 枠 組 み データが 送 信 された 際 に 実 行 する プログラムファイル 名 <form method= post action= xxx.php > (ここに 部 品 を 記 述 ) </form> 部 品 についてはHTMLリファレンス 参 照 <input type= text text name= namae > namae <input type= radio name= seibetu value= 1 > <input type= radio name= seibetu value= 2 > データを 送 信 するボタン <input type= submit value= 送 信 > 部 品 の 種 類 部 品 固 有 の 名 前 選 択 された 方 の 値 が 送 信 される type は 必 ず submit ボタンに 表 示 する 文 字 列
フォーム 情 報 の 利 用 (2) この 内 容 で 送 信 すると namae=miyahara&gakubu=nsc&seibetu=1 というデータが リクエストメッセージによって サーバに 送 られる フォーム 情 報 の 利 用 (2) データはリクエストメッセージによってサーバに 送 信 namae=miyahara&gakubu=nsc&seibetu=1 メソッドは2 種 類 Webサーバ GETメソッド :リクエストURLのクエリとして 渡 す POSTメソッド :リクエストメッセージのボディとして 渡 す
フォーム 情 報 の 利 用 (2) データはリクエストメッセージによってサーバに 送 信 namae=miyahara&gakubu=nsc&seibetu=1 メソッドは2 種 類 GETメソッドド POSTメソッド $_GET[ 変 数 の 名 前 ] として 参 照 $_POST[ 変 数 の 名 前 ] として 参 照 <?php print($_get[ namae ]); print($_get[ gakubu ]); print($_get[ seibetu ]);?> Miyahara nsc 1 ただしこれでは サーバに 送 信 されたデータがそのまま 表 示 nsc = システム 自 然 科 学 研 究 科 1 = 男 と 表 示 させるには 別 のプログラムロジックが 必 要 フォーム 情 報 をサーバで 記 録 する このページの 作 り 方 は 前 作 と 同 様 namae=miyahara&msg=hello というデータがサーバに 送 られる 処 理 プログラムと 概 要 このファイルはどうやって 用 意 するのか? <?php $file = fopen( guestbook.dat, a ); flock($file, LOCK_EX); $line = date( Y/m/d H:i:s ). t ; $line.= $_POST[ namae ]. t ; $line.= $_POST[ msg ]; fputs($file, $line. n ); flock($file, LOCK_UN); fclose($file);?> データを 記 録 するファイルを 開 く ファイルをロック( 同 時 記 録 されないよう) 記 録 すべき1 行 をつくり まず 日 時 を 記 録 namaeを 記 録 msgを 記 録 上 記 1 行 をファイルに 入 れ 改 行 を 加 える ファイルを 解 放 ファイルを 閉 じる
フォーム 情 報 をサーバで 記 録 する $file = fopen( guestbook.dat, a ); このファイルはどうやって 用 意 するのか? (1) 空 のファイルをローカルに 作 成 TeraPadなどを 起 動 後 何 もせずに 名 前 を 付 けて 保 存 する (2) ファイルを 適 切 なサーバ フォルダへアップロード (3) アクセス 権 を 変 更 (WinSCP 右 側 画 面 ) ( 右 クリック プロパティ) このように 設 定 通 常 ファイルは 所 有 者 (= 作 成 者 )のみが 書 込 み(W)できる PHPプログラムから 書 込 みするには 他 人 に 対 して 書 込 み 許 可 を 与 えなくてはならない