情報科学III

平成20年度 情報科学III (理系コア科目・2年生)
PHP 概要
担当 岡村耕二
月曜日 2限
http://okaweb.ec.kyushu-u.ac.jp/lectures/jk3/
本資料の一部は、堀良彰准教授、天野浩文准教授等による
1
以前の講義資料をもとにしています。
復習
• 手元のコンピュータでコンテンツを作成
• bossp.is.kyushu-u.ac.jp にコピーする
– 文字コードに注意
– Winscp を使う
• public_html にコピーする
• bossp.is.kyushu-u.ac.jp にログインする
– TeraTermPro を使う
• export LANG=C (表示言語を英語にする)
• 一番最初だけ(httpd がアクセスできるようにする)
– chmod 711 .
– chmod 711 public_html
– chcon user_u:object_r:httpd_user_content_t public_html
2
学外から課題などをする場合
• 自宅の Windows XP に Winscp をインス
トールします。
– Winscp のインストールについては
http://winscp.net/eng/docs/lang:jp などを参考にしてください。
• 作成したファイルを ah.s.kyushu-u.ac.jp の
適当なディレクトリにコピーします。
• ah.s.kyushu-u.ac.jp に TeraTerm Pro など
でログインします。
– TeraTerm Pro のインストールについては
http://hp.vector.co.jp/authors/VA002416/ を参考にしてください。
ssh 拡張が必要です。
• ah.s.kyushu-u.ac.jp にログインしたら、さき
ほど Winscp でコピーしたファイルを
– scp ファイル bossp.is.kyushu-u.ac.jp:public_html を実行し、bossp
にさらにコピーします。
3
– bossp.is.kyushu-u.ac.jp は、ah.s.kyushu-u.ac.jp から ssh コマンド
今回やること
 プログラミング言語PHPの基礎
– PHPが動く仕組み
– PHPの文法(基礎編)
4
PHPが動く仕組み
5
PHPの特徴
 PHP: Hypertext Preprocessor の略
– 頭文字を取って略称を作るおおもとの名前の中に,その略
称自体が含まれている.
 これ自体が1つのプログラミング言語であるが,HTML言語と組
み合わせて,特にwebページの動的な生成に用いられることが
多い.
– HTMLで書かれた普通のwebページの中に,PHPプログラ
ムを埋め込むことができる.
 文法のかなりの部分は,以下の言語とよく似ている.
– C
– Perl
 外部のデータベースにアクセスする関数をたくさん持っている.
6
HTMLファイルへのPHP埋め込みの簡単な例
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html">
<title>phpのテスト</title>
</head>
<body>
<?php
print("Hello, World!\n");
?>
</body>
</html>
7
どのようにして処理されるか?
ブラウザ
①ページのリクエスト
webサーバ
②ページの取り出し
HTML
HTML
PHP
PHP処理用
モジュール
③PHP部分の処理
(結果はHTMLに埋
め込み)
④HTMLのみと
なったページが
ブラウザに返信
される
(サーバサイドでの処理となっている)
8
PHP部分が処理されると…
<html>
<head>
...
"Hello, World!"
と印字して,改
</head>
行しなさい.
<body>
<?php
print("Hello, World!\n");
?>
</body>
</html>
(これはブラウザでは正しく表示できない)
<html>
<head>
...
</head>
<body>
Hello, World!
</body>
</html>
(これならブラウザで表示できる)
「\n」は,改行文字を表す.
9
サーバ上での約束事
 webサーバ上に置くファイルの拡張子
– HTMLのみのファイル: .html (または .htm)
– PHPを含むファイル: .php
10
HTMLに埋め込むときのルール
<html>
<head>
...
</head>
<body>
<?php
print("Hello, World!\n");
?>
</body>
</html>
PHPで書かれた部分を
<?php と ?>
で囲む.ここで,
<?php を 開始タグ
?>
を 終了タグ
と呼ぶ.
11
PHPの文法(基礎編)
PHP の文法は下記のサイトにて公開されています。
http://www.php.net/manual/ja/
12
PHPの文法(基礎編)







関数の呼び出し
文と文の区切り
PHPからの「脱出」
コメント
変数とデータ型
演算子
制御構文
– if,else,elseif,while,for 文など
13
関数の呼び出し
 関数は,( )で囲まれたデータ(引数)を受け取り,何かの処理
をして,結果を返す.
– 「引数」は「ひきすう」と読む.
print ( "Hello, World!\n" )
関数名
引数
14
文と文の区切り
 文と文の間は,セミコロン( ; )で区切る.
print("Hello, ") ;
print("World!\n");
...
 ただし,PHPブロック(<?php と ?>で囲まれたひと連なりの部
分)の最後の文の後ろには,セミコロンがなくてもよい.
<?php
print("Hello, ") ;
print("World!\n")
?>
15
PHPからの「脱出」
 開始タグ <?php と終了タグ ?> をうまく組み合わせて使うと:
– 1つのHTML文書の中で,「PHPから出たり入ったり」できる.
– PHPブロックを複数箇所に埋め込むことができる.
<html>
...
<body>
<?php print("Hello, World!\n"); ?>
<p>ここは HTML の1行目.</p>
<?php print("Hello, World, Again!\n "); ?>
<p>ここは HTML の2行目.</p>
</body>
</html>
16
コメント
 CやC++のように,プログラムをわかりやすくするためのコメント
(注釈)を書くことができる.
– コメントは,人間が読むための記述で,PHPの文としては無
視される(何の処理も行われない).
<?php
print("Hello, World!\n"); // C++スタイルのコメントは
// その行の終わりまで有効.
/* Cスタイルのコメントは,
複数の行にまたがって書くことができる. */
print("Hello, World, Again!\n"); # シャープ文字で
# で始まるコメント
# もある.
?>
17
変数
 PHPでは,変数名の頭に $ が付く.
例: 「$a」, 「$x」, 「$variable」
– 大文字と小文字は区別される.
• $a と $A,$name と $Name は別の変数になる.
– 英大文字,英小文字,数字,アンダースコア( _ )が使える.
• ただし,最初は英字かアンダースコア
• 数字で始まる変数名は不可
– C/C++ のような変数の型宣言が必要ない.
• 使いたい型のデータをいきなり代入して初期化する.
(宣言なしでいきなり代入してもエラーにならない.)
• 逆に,初期化を忘れていてもエラーにはならないので,
気づきにくい.
18
データ型と初期化の例
 文字列型
$name = "John";
$message = "Hello, World!\n"
代入文は
左辺に右辺を代入
する.
 整数型
$count = 1;
$age = 43;
 論理型
$condition1 = TRUE;
$condition2 = False;
– 値は TRUE と FALSE のいずれか(大文字小文字は区別さ
れない).
 浮動小数点型
$pi = 3.1416;
19
演算子(1)
 代入演算子: =
左辺に右辺を代入する.
例: $a = 0;
 比較演算子
右辺と左辺を比較して,その結果を論理型の値(TRUE/
FALSE)で返す.
 == :左辺と右辺が等しい
 != :左辺と右辺が等しくない
 < :左辺が右辺より小さい
 > :左辺が右辺より大きい
 <= :左辺が右辺以下
 >= :左辺が右辺以上
20
演算子(2)
 連結演算子: . (ピリオド)
– 左辺の文字列データに右辺の文字列データを連結する.
$left . $right
 算術演算子
 +
  *
 /
 論理演算子
 AND
2つの論理型のデータに対して適用される.
例: $condition1 AND $condition2
 OR
 NOT
1つの論理型のデータに対して適用される.
例: NOT $condition2
21
制御構文(1)
 if 文
– ある条件が成り立っているときだけ実行したいときに使う.
• 条件が成り立つときは,内側の文を実行して,次の文に
進む
• 成り立たなかったら,そのまま何もせずに次の文に進む.
– 「条件分岐」ともいう.
if (条件式) {
条件式が成り立つときに実行する文
}
次の文
22
制御構文(2)
 else 文
– if 文とペアにして,条件が成り立っていないときだけ実行し
たい文を置く.
if (条件式) {
条件式が成り立つときに実行する文
}
else {
条件式が成り立たないときに実行する文
}
23
制御構文(3)
 elseif 文
– 先行する if 文の条件が成り立たなかったとき,次の条件を
検査する.
if (条件式1) {
条件式1が成り立つときに実行する文
}
elseif (条件式2) {
条件式2が成り立つときに実行する文
}
else {
どちらの条件式も成り立たないときに実行する文
}
24
制御構文(4)
 switch 文
– if ~ elseif ~ elseif ~…~ else でもいいが,条
件式が単一の変数で判定されるときには便利な構文があ
る. (変数) {
switch
コロン(:)であるこ
case "値1" :
変数の値が「値1」のときに実行する文
とに注意!
break;
case "値2" :
変数の値が「値2」のときに実行する文
break;
...
default :
変数の値がどれとも一致しなかったときに実行する文
break;
}
次の文
25
制御構文(5)
 while 文
– 条件が成り立つ間,何度でも繰り返す.
– 条件式が成り立たなくなったら,次の文に進む.
– while ループともいう
while (条件式) {
条件式が成り立つときに実行する文
}
次の文
26
制御構文(6)
 do-while 文
– 最初は1回必ず実行する.
– それが終わったら条件の検査をする.
– 条件が成り立たなくなるまで繰り返す.
do {
条件式が成り立つときに実行する文
} while (条件式)
次の文
27
制御構文(7)
 for 文
– 同じ処理を一定の回数繰り返したいときに用いる.
– for ループともいう.
「カウンタを1に
セットする」など
「カウンタが100以下
の間は…」など
「カウンタの値を1増やす」など
for (初期化の式; 条件式; 1回終了したときの処理) {
繰り返し実行する文
}
次の文
28
まとめ







関数の呼び出し
文と文の区切り
PHPからの「脱出」
コメント
変数とデータ型
演算子
制御構文
– if,else,elseif,while,for 文など
29
練習問題
1. 任意の数を生成して 表示させてみよう。
2. その数字が素数かどうか判定してみよう。
30
演習問題
問題1) PHP を用いて、1, 2, 3, .... , 99 と、カンマで区切られた1から99までの数字を
すべて表示するプログラムを作成せよ。
問題2) 上の問題1の出力について、2の倍数は赤で、3の倍数は青で、6の倍数は
緑で表示するようにプログラムを改良せよ。
HTMLにおいてフォントの色を変えるには、次のようにするとよい。
<FONT COLOR=“FF0000”>赤</FONT>の場合
<FONT COLOR=“00FF00”>緑</FONT>の場合
<FONT COLOR=“0000FF”>青</FONT>の場合
31
RAMでの出席登録についての注意
 教員が講義時間を設定するようになっている.
– 出欠確認を開始してから,その講義時間が終了するまでの
間に登録しなくてはならない.
– それを過ぎると,出席したことを登録できなくなるので,注意
すること.
32