PHP プログラムの実行 担当 岡村耕二 月曜日 2限 平成22年度 情報科学III (理系コア科目・2年生)

Slides:



Advertisements
Similar presentations
1 PHP 文法 担当 岡村耕二 月曜日 2限 平成 20 年度 情報科学 III (理系コア科目・2年生) 本資料の一部は、堀良彰准教授、天野浩文准教授等による 以前の講義資料をもとにしています。
Advertisements

情報アプリケーション1 2006 年 10 月 12 日 第四回資料 担当 重定 如彦. 目次 データの送信とフォーム クイズ CGI 複数のパーツのデータの分割方法 配列変数.
1 PHP プログラムの実行(まと め) 担当 岡村耕二 月曜日 2限 平成 22 年度 情報科学 III (理系コア科目・2年生) 本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明 准教授等による以前の講義資料をもとにしています。
情報基礎A 情報科学研究科 徳山 豪.
The Perl Conference Japan ’98 朝日奈アンテナによる コンテンツ情報の取得と利用
PHP 文法 担当 岡村耕二 月曜日 2限 平成22年度 情報科学III (理系コア科目・2年生)
Struts1.xの脆弱性(CVE ) に対するSDEの対処:推奨タイプ (サンプルソースコードの公開)
PHP プログラムの実行(まとめ) SQL 概要
Struts1.xの脆弱性(CVE ) に対するSDEの対処:wrapタイプ (パッチのご提供)
HTMLの記述と WWWにおける情報公開 遠藤
エンタープライズアプリケーション II 第10回 / 2006年7月23日
Servlet入門(2) 入力フォームをつかったWebアプリ
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
PHP 概要 担当 岡村耕二 月曜日 2限 平成21年度 情報科学III (理系コア科目・2年生)
JavaServlet&JSP入門 01K0018 中村太一.
Webコミュニケーショングループ ~PHPの基礎~ M1 宮崎 真.
第4回 個人の動画配信補足のためのWeb構築
PHP 実用的なサンプル 浅川 和久 2017/3/18 PHP 実用的なサンプル.
Bottle/Pythonによる Webアプリ入門
Web App Semi 2008 #1 Web App Semi 2008 #1.
4-3.基本的なPHPスクリプト 2004年6月24日(木) 大北高広 01T6010F.
PHP プログラムの実行 担当 岡村耕二 月曜日 2限 平成20年度 情報科学III (理系コア科目・2年生)
PHP 文法 担当 岡村耕二 月曜日 2限 平成21年度 情報科学III (理系コア科目・2年生)
HTTPプロトコルとJSP (1) データベース論 第3回.
JQueryでAjax 藤田@ジャストプレイヤー ※参考しまくり文献 jQuery日本語リファレンス.
情報アプリケーション1 2008年 12月 3日 第四回資料 担当 重定 如彦 .
PHP 概要 担当 岡村耕二 月曜日 2限 平成20年度 情報科学III (理系コア科目・2年生)
HTTPプロトコル J2EE I 第7回 /
初年次セミナー 第2回 文字の出力.
09 06/23 PHP と SQL (MySQL) の連携 その2
データベース設計 第9回 Webインタフェースの作成(1)
情報アプリケーション1 2006年 10月 5日 第三回資料 担当 重定 如彦 .
第8章 Web技術とセキュリティ   岡本 好未.
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
ガジェット・マスターへの まわり道!? ~Ajaxを理解しよう~
制作技術ー4 アクセスカウンタ等付加機能 PHP と Javascript
PHP と SQL (MySQL) の連携 複数のテーブルを扱う
プログラミング演習I 2003年6月25日(第10回) 木村巌.
09 06/23 PHP と SQL (MySQL) の連携 その1
制作技術ー3 双方向通信 : CGIシステムと環境変数
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
知識情報演習Ⅲ(後半第3回) 辻 慶太
情報アプリケーション1 2006年 10月 19日 第四回資料 担当 重定 如彦 .
09 06/23 PHP と SQL (MySQL) の連携 その2
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
PHP と SQL (MySQL) の連携 大量のデータを扱う
ファイルのアップロード HTMLファイルをWebサーバにアップロード 名商大のWebサーバ(opinion.nucba.ac.jp)
コンピュータ プレゼンテーション.
PHP 概要 担当 岡村耕二 月曜日 2限 平成22年度 情報科学III (理系コア科目・2年生)
知識情報演習Ⅲ(後半第3回) 辻 慶太
情報コミュニケーション入門b 第11回 Web入門(2)
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
C言語 はじめに 2016年 吉田研究室.
統計ソフトウエアRの基礎.
第1章 いよいよプログラミング!! ~文章の表示 printf~
アルゴリズムとプログラミング (Algorithms and Programming)
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
情報基礎演習I(プログラミング) 6月8日 水曜5限 江草由佳
プログラミング入門 電卓を作ろう・パートI!!.
情報基礎演習I(プログラミング) 第8回 6月8日 水曜5限 江草由佳
独習XML ~第1章 XMLの基礎~ 1.1 XML文書の基礎 1.2 XMLとHTML
Webページに動きを持たせるJavascript言語について 例題のプログラムを通して体験的に理解することとします。
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
第14回放送授業.
09 06/23 PHP と SQL (MySQL) の連携 その3
PHP と SQL (MySQL) の連携 日本語のデータを扱う
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
情報処理Ⅱ 2005年11月25日(金).
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
Presentation transcript:

PHP プログラムの実行 担当 岡村耕二 月曜日 2限 平成22年度 情報科学III (理系コア科目・2年生) 2007/5/9 平成22年度 情報科学III (理系コア科目・2年生) PHP プログラムの実行 担当 岡村耕二 月曜日 2限 http://okaweb.ec.kyushu-u.ac.jp/lectures/jk3/ 本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明准教授等による以前の講義資料をもとにしています。 情報科学III(5)

前回のおさらい(1) 配列(array) 複数の値をリストとしてまとめて格納する. ひとつひとつの値を要素(element)と呼ぶ. 番号で要素を特定するものと,名前で要素を特定するものがある. 多次元の配列も作れる. $fruit[1] = "banana"; // 番号で要素を識別する配列の例 $fruit[0] = "apple"; $fruit[2] = "みかん"; $profile["sex"] = "男"; // 名前で要素を識別する配列(連想配列)の例 $profile["age"] = 20; $profile["country"] = "Japan";

実は,並んでいる順番はあまり重要でない. 配列を模式的に書くと 番号で要素を区別する配列の場合 連想配列の場合 "banana" "みかん" "apple" 必要に応じて伸びていく $fruit[0] $fruit[2] $fruit[1] 実は,並んでいる順番はあまり重要でない. 20 "Japan" "男" 必要に応じて伸びていく $profile["sex"] $profile["country"] $profile["age"]

前回のおさらい(2) 戻り値を受け取る変数 = 関数名( 引数 ); 関数(function) ( )で囲まれたデータ(引数)を受け取り,何かの処理をして,結果を返す. 「引数」は「ひきすう」と読む. ほとんどの場合,実行結果は,変数に直接代入できる. 実行結果として返される値は,「戻り値」と呼ばれる. 戻り値がのちのち必要になる場合は,いったん変数で受け取っておいて,その変数を利用するとよい. 戻り値を受け取る変数 = 関数名( 引数 );

前回のおさらい(3) PHPプログラムがうまく実行されないときのチェックリスト HTMLの開始タグ・終了タグはきちんと対応が取れているか? 例:<head> ~ </head> PHPの開始タグ・終了タグはきちんと対応が取れているか? <?php ~ ?> ( ~ ),{ ~ }," ~ ",などの対応は取れているか? あるべきところにセミコロンがあるか? 連想配列に値をセットするとき/値を読むとき,キーの名前を打ち間違えていないか? 例: $message["Wed"] と $message["Wen"];

print( ) に関する補足と訂正 第4回のスライドでは,以下のように説明していた. print( ) は関数である. 正しくは,以下の通りであった. http://www.php.net/manual/ja/function.print.php (関数レファレンスの中に書かれてはいるけれど…) 厳密に言うと,実は print( ) は関数ではなく PHP言語が持つ特殊な構文構造であり,括弧を省略することもできる. print または print( ) を実行した結果の値(戻り値)は,常に1である.

今日勉強すること PHPの実行形態 PHPと入出力(おさらい) PHPとファイル処理

PHPの実行形態

PHPはプログラミング言語である ここまでの講義では,HTML 文書に埋め込むような使い方だけを扱ってきたが: 実は,PHPのみでプログラムを書き,webサーバ抜きで実行することもできる. bossp のように,PHP処理系がコマンドラインからでも実行できるようにインストールされているサーバでは,以下のような形式でも実行できる. web ブラウザでアクセスしたときに何の表示も出ないようなときには,これによって何がおかしいのかを知ることができるかも知れない. [te999999@bossp ~]$ php PHPのファイル名

PHPプログラムをコマンドラインから実行すると… ミニ実習 これまでに作ったPHPプログラムをコマンドラインから実行してみよう Tera Term (TTSSH) で bossp に接続して,PHPプログラムの入っているディレクトリ(~/public_html)まで cd して実行 何がおきるか? [te999999@bossp ~]$ cd public_html [te999999@bossp ~]$ php PHPのファイル名

PHPプログラムの実行形態(まとめ) PHP処理モジュールがインストールされている web サーバ上で,web サーバ経由で実行させる. PHPプログラムを実行した結果が,HTMLデータに埋め込まれて,ブラウザに返される. PHPがコマンドラインで実行できるようにインストールされているサーバ上で,コマンドラインから起動する. PHPプログラムを実行した結果が,ディスプレイ上に表示される. 実際には: HTTPレスポンスの一部も合わせて出力される. 純粋のPHPだけでなく,HTML埋め込みのPHPも処理できる.

PHPと入出力

プログラムにとっての入出力(1) プログラムを実行するときには,普通は,外部から与えたデータを元に計算をさせたり,計算した結果を後に(外に)残したりしたいことが多い. 実行時に外部から何のデータも持ってこない(あるいは,外部の影響をまったく受けない)プログラムがあったとしたら: 何度実行しても同じ実行結果しか生み出せない. 2回以上実行する意味がどれだけあるか? 実行時に得られた計算結果を外部に引き渡さない(あるいは,外部に何の影響も残さない)プログラムがあったとしたら: 何を計算してもその結果を知る方法がない. そもそも,実行する意味があるか?

プログラムにとっての入出力(2) 入力(input) プログラムに対して,外部から与えられるデータ 入力の例 Enterキーが押されるまでの間にキーボードから打ち込まれた文字列 ファイルの中に格納されていた文字列や数値 出力(output) プログラムが,外部に対して与える(残す)データ 出力の例 ディスプレイの画面に表示される文字列 ファイルの中に保存される文字列や数値

プログラムにとっての入出力(3) 通常のプログラムの典型的な実行形態 入力はキーボードから 出力はディスプレイに 実行中の プログラム

プログラムにとっての入出力(4) 場合によっては,入力や出力をファイルに対して行うこともある. 実行中の プログラム

標準入出力 多くのオペレーティングシステムでは,実行開始されたプログラムに,以下の3種類の入力・出力をあらかじめ与えている. 標準入力(standard input) デフォルトでは,キーボードから 標準出力(standard output) デフォルトでは,ディスプレイに 標準エラー出力(standard error output) 出力が2つに分かれているのは… 正常に処理できたときのメッセージ等と,何か問題が起きたときのメッセージ等を分離して保存しやすくするため.

コマンドラインから実行されるPHPプログラム 標準出力・標準エラー出力をディスプレイに出せる. キーボードからの標準入力を受けることもできる. ファイルに対する入出力もできる. ただし,適切な関数を呼び出す必要がある. 実行中の PHPプログラム インターネット TTSSH SSHが提供する「回廊」

webサーバ経由で実行されるPHPプログラム(1) サーバ上のファイルに対する入出力 これもあまり問題はない. 実際,このような機能を提供するための関数もいろいろと用意されている. 実行中の PHPプログラム サーバ インターネット webサーバ PHP 処理 モジュール

webサーバ経由で実行されるPHPプログラム(2) クライアントに対する入出力? ところが,webサーバ上で実行中のPHPプログラムからは,クライアントのキーボードやディスプレイが直接には見えない. 「標準入出力」の考えは,この実行形態にあまりなじまない. 実行中の PHPプログラム ? webサーバ インターネット クライアント PHP 処理 モジュール

ではどうやって入出力するか? しかたがないので,HTTPの力を借りる. 入力は,HTTPリクエストから受け取る. 出力は,HTTPレスポンスに埋め込む. HTTP リクエスト 実行中の PHPプログラム webサーバ インター ネット HTTP レスポンス クライアント PHP 処理 モジュール

クライアントへの間接的な出力 これは,print( ) の呼び出しで簡単に実現できる. ステータス行やメッセージヘッダは自動的に付加される. HTTPレスポンス PHPプログラム ステータス行 <html> <head> ... </head> <body> <?php print("Hello, World!\n"); ?> </body>  </html> メッセージヘッダ (ない場合もある) (空行) <html> <head> ... </head> <body> Hello, World! </body>  </html>

クライアントからの間接的な入力 HTMLの <form> タグを用いる. ブラウザ画面内で入力された内容を集める. 入力させる内容は <input> タグで指定する. submit タイプのボタンがクリックされると,集めた内容を HTTP で送信する. reset タイプのボタンがクリックされると,ブラウザに入力された内容をクリアする. <form method="メソッド名" action="URL"> <input ... > ... <input type="submit" value="送信"> <input type="reset" value="クリア"> </form>

<form> タグ(1) <form method="メソッド名" action="URL" ...> ... method:ブラウザに入力されたデータの送信形式 (GETまたはPOST) GET:データをURLの末尾に追加して送信する.送信できるデータ量には制限がある. POST:データをURLとは別に送信する形式.一度に大量のデータを送信することもできる. action:集めたデータの送信先のURL 通常は,PHPプログラム(HTML埋め込みも可)またはCGIプログラム このファイルと同じディレクトリにあるときには,ファイル名だけでも可. <form method="メソッド名" action="URL" ...> ... </form>

<form> タグ(2) <form>タグによるデータ受け渡しの様子 <form>タグを含むwebページを表示中に,submit タイプのボタンをクリック 入力されていた内容が,action 先のプログラムに渡される. HTTP リクエスト webサーバ クライアント PHP 処理 モジュール

<form> タグ(3) <form>タグは,PHPだけでなく,CGIプログラムに対するデータ入力の方法としても用いられる. CGI(Common Gateway Interface) webサーバに,webブラウザからの要求に応じてプログラムを起動させるためのしくみ よく用いられるのは Perl で書かれたスクリプト 入力データを集める最初の web ページは,HTMLだけで書いてもよいし,CGIプログラムやPHP(HTML埋め込みを含む)を使って書いてもよい. ファイルをアップロードするようなときは,method,action の他に enctype 属性も指定する必要がある.

<input> タグのいろいろ(1) <input type="text" name="名前"...> 1行のテキストの入力欄を作る. name は項目を区別するための名前.項目ごとに違う名前を指定する. size,maxlength 属性の指定ができる. value を指定すると,あらかじめ文字列を入れておくことができる. <p> 簡単なテキスト入力欄の例 <input type="text" name="text1"> </p>

<input> タグのいろいろ(2) <input type="password" name="名前" ...> パスワード形式の入力欄を作る.ここに入力される内容は画面上ではすべてアスタリスク(*)となる. name は項目を区別するための名前.項目ごとに違う名前を指定する. size,maxlength 属性の指定ができる. value を指定すると,あらかじめ文字列を入れておくことができる.ただし,これもすべてアスタリスク(*)となる. <p> 簡単なパスワード入力欄 <input type="password" name="password1"> </p>

<input> タグのいろいろ(3) <input type="radio" name="名前" ...> ラジオボタンを作る.選択されたボタンの value が送信される. name は項目を区別するための名前.選択肢全体で共通の名前を付ける. 同じ name を付けることで複数のラジオボタンがグループ化され,そのグループ内では,1つしか選択できない. checked 指定したボタンは最初から選択された状態になる. <p> 簡単なラジオボタンの例:PHPを使ったことがありますか? <br>  <input type="radio" name="q1" value="はい">はい  <input type="radio" name="q1" value="いいえ">いいえ </p>

<input> タグのいろいろ(4) <input type="checkbox" name="名前"...> チェックボックスを作る.選択されたボタンの value が送信される. name は項目を区別するための名前. 選択肢全体で共通の名前を付ける. 後ろに [] を付ける(説明は次回). 同じ name を付けることで複数のチェックボックスがグループ化され,そのグループ内で複数選択できる. checked 指定したボタンは最初から選択された状態になる. <p> 質問1 あなたの好きな果物は?(複数選択可) <br>  <input type="checkbox" name="q2[]" value="リンゴ">リンゴ  <input type="checkbox" name="q2[]" value="バナナ">バナナ  <input type="checkbox" name="q2[]" value="キウイ">キウイ </p>

<input> タグのいろいろ(5) <input type="file" name="名前" ...> ファイルの送信欄を作る.自動的に「参照...」または「Browse...」ボタンが表示される. name は項目を区別するための名前.項目ごとに違う名前を指定する. size を指定すると,入力欄の横幅を決められる. <p> 送信するファイル: <br> <input type="file" name="uploadfile1"> </p>

<input> タグのいろいろ(6) <input type="hidden" name="名前" ...> ブラウザ画面には表示されない「隠しデータ」を送信する. name は項目を区別するための名前.項目ごとに違う名前を指定する. <p> <input type="hidden" name="title" value="非表示データ"> </p>

その他のタグ(1) <textarea name="名前" ...> </textarea> 複数行のテキスト入力欄を作る. name は項目を区別するための名前.項目ごとに違う名前を指定する. cols,rows で入力欄の横幅,高さを決められる.wrap で自動改行のタイプを指定できる. このタグで囲まれた部分に文字列を入れておくと,あらかじめその文字列が入力された状態になる. <p> テキストエリアの例: <br> <textarea name="message1">ここを編集</textarea> </p>

その他のタグ(2) <select name="名前"> <option value="値">選択肢の名前</option> ... </select> プルダウンメニューを作る.どれかの選択肢が選択されたとき,value の内容が送信される. name は項目を区別するための名前.選択肢全体で共通の名前を付ける. <p> 質問1 あなたの血液型は?<br>  <select name="q3“> <option value="A">A型</option>   <option value="B">B型</option>   <option value="O">O型</option>   <option value="AB">AB型</option> </select> </p>

ファイルを扱ってみよう file1.txt がサーバーに存在する <?php print "1. output by fpassthru<br>\n"; $fh=fopen("file1.txt","r"); fpassthru($fh); print "<br><br>\n"; print "2. output after input into array and output the array.<br>\n"; $lines=file("file1.txt"); print_r ($lines); ?>

ファイルを扱ってみよう: Upload メイン <form enctype="multipart/form-data" method="POST" ACTION=“upload.php"><p> <INPUT type="hidden" name="MAX_FILE_SIZE" SIZE=65536><p> <INPUT type="file" name="testfile" size=20><p> <input type="submit" value="Upload"> <input type="reset" value="Clear"> サーバー <?php printf("name1 %s<br>", $_FILES['testfile']['name']); printf("name2 %s<br><br>",$_FILES['testfile']['tmp_name']); $filename=$_FILES['testfile']['tmp_name']; print "1. outout by fpassthru<br>\n"; $fh=fopen($filename,"r"); fpassthru($fh); print "<br><br>\n"; print "2. output after input into array and output the array.<br>\n"; $lines=file($filename); print_r ($lines); ?>

演習問題 手元のクライアントPC上で、英数字でテキストファイルを、Windows XP のメモ帳などで作成し、それをサーバーにアップロードして、 そのテキスト、 そのテストに含まれる単語数、 そのテキストに含まれる文字数、 を、表示するプログラムを作成せよ。 例: This is a pen. Is this a pen,too? Yes, it is. 単語数 12 文字数?

課題問題 クライアントのWindows XP などで英数字でテキストファイルを作成し、そのファイルに含まれる単語を、抽出し、表示するプログラムを作成せよ。 例 This is a pen. Is this a pen,too? Yes, it is. 出力結果 this (2) is (3) a(2) pen(2) too(1) yes (1) it(1) 単語は出現頻度やアルファベット順にソーティングできると、なおよい。