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