1 PHP プログラムの実行(まと め) 担当 岡村耕二 月曜日 2限 平成 22 年度 情報科学 III (理系コア科目・2年生) 本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明 准教授等による以前の講義資料をもとにしています。
2 前回のおさらい(1) PHP プログラムの処理形態 1.PHP 処理モジュールがインストールされている web サーバ上で, web サーバ経由で実行させる. 2.PHP がコマンドラインで実行できるようにインストー ルされているサーバ上で,コマンドラインから起動す る. PHP プログラムの入出力 – コマンドラインから実行される場合は簡単 ディスプレイ,キーボード,ファイル –web サーバから実行される場合は,単純ではない.
3 前回のおさらい(2) web サーバで実行される PHP プログラムの入出力 –HTTP の力を借りる. 入力は, HTTP リクエストから受け取る. 出力は, HTTP レスポンスに埋め込む. web サーバ PHP 処理 モジュー ル 実行中の PHP プログラ ム インター ネット クライアント HTTP レス ポン ス HTTP リク エス ト
4 前回のおさらい(3) クライアントへの間接的な出力 –HTML データに print( ) の出力が埋め込まれる. – ステータス行やメッセージヘッダが自動的に付加され る. PHP プログラム print( ) で出力すると, その内容が HTML データ に埋め込まれてクライア ントに返送される. PHP からの出 力を含む web ページ
5 前回のおさらい(4) クライアントからの間接的な入力 –HTML の ~ タグを用いる. –submit タイプのボタンがクリックされると,集めた 内容を HTTP で送信する. 利用者の 入力を処理 する PHP プログラム タグのあるページで 入力を集めて, PHP プログラムに送る. 利用者の入 力データを フォームに 含む web ページ
6 前回のおさらい(5) ~ タグ –method :ブラウザに入力されたデータをサーバに送信 するときの形式 ( GET または POST ) GET :データを URL の末尾に追加して送信する. POST :データを URL とは別に送信する. –action :集めたデータの送信先の URL 通常は, PHP プログラム( HTML 埋め込みも可)ま たは CGI プログラム...
7 前回のおさらい(6) 実際の入力部分は, タグで...
8 前回のおさらい(7) タグの例 – :送信ボタン – :1行の入力欄 他に –"radio" (ラジオボタン), "password" (パスワード形式の入 力欄), "checkbox" (チェックボックス), "file" (ファイ ルの送信欄), "hidden" (隠しデータ), – ~ (複数行の入力欄) – 選択肢の名前... (プルダウンメニュー)
9 前回の補足と訂正 複数選択の可能な "checkbox" タイプの入力欄 – タグの name 属性の値は,複数選択された場 合には PHP の配列に格納されるように, "q2[]" のよう な名前にしておくとよい. 質問 1 あなたの好きな果物は?(複数選択可) リンゴ バナナ キウイ
10 PHP と入出力(承前)
11 外部からのデータの受け取り方(1) 入力データを PHP プログラムへ送るのは ~ を使えばよいとして … 受け側の PHP プログラムでは, ~ タグ から送られてきたデータをどのようにして受け取ればよい か? HTML ファイ ル 受け側の PHP プログラム タグのあるページで 入力を集めて, PHP プログラムに送る. ? 入力された データ POST または GET
12 HTML ファイ ル 外部からのデータの受け取り方(2) PHP プログラムの外部から送り込まれるデータ – ~ タグで集める利用者入力データ以 外のものもある. PHP プログラムを実行している web サーバに関する 情報 PHP プログラム自身に関する情報(ファイル名な ど) 受け側の PHP プログラム 利用者が入力 したデータ サーバの 情報 プログラム 自身の情報 POST または GET
13 外部からのデータの受け取り方(3) web サーバ経由で起動された PHP プログラムには,外部か ら来るデータが自動的に格納される,定義済みの連想配列 がある. –$_SERVER[" 名前 "] –$_ENV[" 名前 "] –$_POST[" 名前 "] –$_GET[" 名前 "] PHP プログラムが web サーバ経由で起動されると,上記の 配列はすでにアクセス可能になっている. – 要素には値もセットされている.
14 $_SERVER[' 名前 '] と $_ENV[' 名前 '] $_SERVER[" 名前 "] – その PHP プログラムを実行している web サーバに関する 情報 たとえば: $_SERVER["HTTP_HOST"] :サーバのホスト名 $_SERVER["SERVER_ADDR"] :サーバの IP アドレ ス $_SERVER["HTTP_USER_AGENT"] :その PHP プ ログラムにアクセスしてきたクライアントがサーバ に対して名乗っているブラウザ名 $_ENV[" 名前 "] – その PHP プログラムが実行されるときの環境に関する 情報
15 これらの連想配列の内容を確認する方法 phpinfo( ) 関数を実行する – 第 4 回のスライドで紹介した.
16 $_POST[' 名前 '] その PHP プログラムに対して, POST メソッドで送り込ま れたデータ HTML ファイ ル 受け側の PHP プログラム タグのあるページで 入力を集めて, PHP プログラムに送る. POST 入力された データ $_POST[" 名前 "] 入力された データ
17 $_GET[' 名前 '] その PHP プログラムに対して, GET メソッドで送り込まれ たデータ HTML ファイ ル 受け側の PHP プログラム タグのあるページで 入力を集めて, PHP プログラムに送る. GET 入力された データ $_GET[" 名前 "] 入力された データ
18 連想配列 $_POST[ ] ( $_GET[ ] )のキー ( , )タグの中で指定 された name 属性の値が,これらの連想配列のキー(要素 を特定するための名前)になる. HTML ファイ ル 受け側の PHP プログラム POST $_POST["key1"] 入力データ
19 2 段以上の POST / GET タグで集めたデータを受け取った PHP プログラ ムが,さらに次の PHP プログラムにデータを伝えるため の タグを含むことがある. HTML ファイ ル 受け側の PHP プログラム POST/GET 受け側の PHP プログラム POST/GET さらにデータ を入力して, また送信ボタ ンを クリック データを入力 して,送信ボ タンをクリッ ク
20 POST/GET したデータの到達範囲 そのときの POST ( GET ) メソッドで送信されたデータが, 送信先の PHP プログラムの $_POST[ ] ( $_GET[ ] )連 想配列に入る. HTML ファイ ル 受け側の PHP プログラム 1 POST/GET 入力データ 1 入力データ 2 $_POST["key1"] ( $_GET["key1"] ) 受け側の PHP プログラム 2 POST/GET $_POST["key1"] ( $_GET["key1"] ) ここで送信されるデー タは, そのままでは,プログ ラム2には伝わらない.
21 入力されたデータを2段以上先まで伝える方法 いくつか方法はあるが,簡単なものは: –"hidden" タイプの タグで HTML ファイ ル 受け側の PHP プログラム 1 POST/GET 入力データ 1 入力データ 2 受け側の PHP プログラム 2 POST/GET $_POST["key1"] $_POST["key2"] ( $_GET["key1"] ) ( $_GET["key2"] ) $_POST["key1"] ( $_GET["key1"] ) 心情的には, こうしたい が,文法的 に ×
php プログラミング 基本的な文法を用いる。 – 分岐、ループ 配列を用いる。 文字列を扱う。 HTML から、入力したデータを渡してもらう。 HTML から、ファイルでデータを渡してもらう。 22