20110518:PHPの基礎

~ Webプログラミングの基礎~
~PHPの基礎(1)
(2011/05/18)
政策情報学部
渡辺恭人
[email protected]
メーリングリスト:[email protected]:
資料ページ: http://www.cuc.ac.jp/~riho-m/rg11/
Webプログラミングの世界
• Webアプリケーションを効率的に開発、運用
するための技術が日々進化している
• Webプログラミングに必要な技術
– バラバラに存在しているのではない
– それまでの技術では解決できない何らかのニー
ズをみたすために出現
• 何が必要とされ何が受け入れられてきたのか
を見ていくことで進化を学ぶ
2
WWWの仕組み
• WWWサーバとWWWクライアントの通信
– Webサーバは、HTTPのリクエストを受けて、
HTMLを出力する
リクエスト(GET)
取得したい
WWWクライアント
URLを要求
(ブラウザ)
(URL+ヘッダ)
取得したデータを
解釈(PARSE)して
表示(RENDERING)
WWWサーバ
レスポンス
HTML, XMLなどの
データ+ヘッダを送
信
3
静的なWebサイト
• ブラウザがURLでWebサーバにファイルを要
求(リクエスト)する
• Webサーバは、要求されたURLに対応する
ファイルを探して、その中身を送り返している
だけ
• Webページが出来合いのファイルとしてあら
かじめ作られていて、どういう要求に対しても、
常に「同じレスポンス」を返す
4
静的なWebサイト
ブラウザ
Webサーバは、要求され
たファイルの中身をその
まま送り返す
Web
サーバ
Webページ
5
Webプログラミング
• 同じ要求(リクエスト)が来ても、状況に応じて
「違った応答(レスポンス)」を返す「動的な
Webサイト」を作ること
• ブラウザからの要求(リクエスト)に応じてWeb
サーバがそれに対応したファイルを探し出す
ところまでは「静的なWebサイト」と同じ
• 探し出したファイルをプログラムとして実行し、
そのプログラムが生成した結果をレスポンス
として送り返す点が異なる
– Webプログラム
6
Webプログラミングに必要なもの
• Webサーバ
– Apache
• プログラミング言語
– VB Script
– JavaScript
– Perl
– PHP
– Java
– など
7
動的なWebサイト
ブラウザ
Web
サーバ
他のシステム
Webサーバは、
要求されたファイ
ルを実行し、その
出力を送り返す
Web
プログ
ラム
データベース
8
動的なWebサイト
• 要求を受けてからレスポンスを作る
– 応答時間が余計にかかる
– Webサーバへの負荷も増える
• その代り、コンピュータプログラムでできること
ならどんな処理でも作りこめる
– データベースサーバに接続するWebプログラムで、
膨大なデータから必要なデータを選択してレスポ
ンスする
• オークションや検索サイト、ブラウザで電子メールを読
み書きする
9
HTML文書を表示させる
• EmEditorを起動
• ツールバーをクリックして
• HTML文書を選ぶ
10
HTML文書の作成
<html>
<head>
<title>Hello, World.</title>
</head>
<body>
Hello World!
</body>
</html>
11
HTML文書の保存と表示
• メニューバー「ファイル」⇒「名前を付けて保
存」
• 保存場所
– 適当に(My Document)あたり
• ファイル名:hello.html
• WinSCPでlogin.cuc.ac.jpに接続する
– Web_localに転送する
• ブラウザで開く
– http://www2.cuc.ac.jp/~ユーザ名/hello.htm
12
PHPを使ってみる
• PHPスクリプトの基本構文
– 「<?php」と「?> 」で囲む
– PHP処理文の最後は「セミコロン(;)」で終わる
– ファイルの上から下に処理が実行される
– ファイルの最後に到達するとプログラムが終了す
ここに囲まれた部分が
る
PHPスクリプト
<?php print ”Hello, World!”; ?>
命令
文字列
13
PHPプログラムの入力
• EmEditorを起動
• ツールバーをクリックして
• PHPを選ぶ
– 自動的に入力される文字列は消す
• 以下のように入力します。
<?php phpinfo(); ?>
14
PHPプログラムの保存、実行
• メニューバーの「ファイル」⇒「名前を付けて保
存」
• 保存場所:適当(My Documentあたり)
• ファイル名:info.php
• WinSCPでlogin.cuc.ac.jpに接続する
– Web_localに転送する
• ブラウザで開く
– http://www2.cuc.ac.jp/~ユーザ名/info.php
15
16
hello.htmlと同じ内容をPHPで。
• HTML部分は通常のHTMLとしてWebブラウザ
に出力される
• PHP部分は、実行され、動的な値(この場合文
字列)を生成して、print構文を使って、HTML
に出力する。
• ファイルの拡張子は必ず「.php」
<html>
<body>
<?php print ”Hello, World!”; ?>
</body>
</html>
17
PHPプログラムの保存、実行
• メニューバーの「ファイル」⇒「名前を付けて保
存」
• 保存場所:適当(My Documentあたり)
• ファイル名:hello.php
• WinSCPでlogin.cuc.ac.jpに接続する
– Web_localに転送する
• ブラウザで開く
– http://www2.cuc.ac.jp/~ユーザ名/hello.php
18
間違えたら・・・
• 実行したときに、エラーメッセージが表示され
る
– 例、printをpointにすると、構文エラーとして「
syntax error」が表示される
• 何行目にエラーが発生しているかを通知して
くれる
– でも実際のエラー部分とは異なることが多い
– 前後を見直そう
19
プログラム中のコメントの書き方
• プログラム中でメモを残したいときに「コメント
」を使う
– プログラムとしては実行されない
– まとまった処理内容、書き残しなどを書く
• 書き方
– 「/*」で始まり、「*/」で終わるコメント
• 複数行をコメントできる
– 「//」で始まり、改行すると終わるコメント
– 「#」で始まり、改行すると終わるコメント
20
変数
• データを格納する箱
– 処理の途中結果を一時的に保存しておく
• PHPの変数
– 「$」記号で始まる
• 例、$memoryなど
• 内容
– 数値、文字列など
• 文字列の場合は、「”」で文字列を囲む。
21
変数
<?php
変数に数値を代入
$memory1 = 768;
$memory2 = 256;
$memory_total = $memory1 + $memory2;
?>
$memory1と$memory2を
<html>
加算して$memory_totalに
<body>
代入
メモリ合計は
<?php print $memory_total; ?>MBです。
</body>
$memory_totalを
</html>
print構文で出力
22
PHPプログラムの保存、実行
• メニューバーの「ファイル」⇒「名前を付けて保
存」
• 保存場所:適当(My Documentあたり)
• ファイル名:mem.php
• WinSCPでlogin.cuc.ac.jpに接続する
– Web_localに転送する
• ブラウザで開く
– http://www2.cuc.ac.jp/~ユーザ名/mem.php
23
演算子
• 一つ以上の値から、別な値を導き出す
記述例
$a + $b
$a - $b
$a * $b
$a / $b
$a % $b
解説
$aと$bの合計
$aと$bの差
$aと$bの積
$aと$bの商
$aを$bで割った余り
算数と同じように、乗算・除算・剰余は、加算・減算より優先順位が高い。
先に計算する場合は、カッコを使う。
24
代入演算子
記述例
$a = $b
$a += $b
$a -= $b
$a *= $b
$a /= $b
$a %= $b
$a .= $b
$a++
$a--
解説
$aに$bの値を代入
$aに$bの値を加算して代入
$aに$bの値を減算して代入
$aに$bの値を乗算して代入
$aに$bの値を除算して代入
$aに$bの値を剰余算して代入
$aに$bの文字列を結合して代入
$aに1を加算した値を$aに代入
$aに1を減算した値を$aに代入
25
代入演算子
例1:
dainyu1.php
<?php
例2:
5/18はここで終了
次回はp.27からです。
dainyu2.php
$a = 10;
$b = 20;
<?php
$a = ”PHPは”;
$b = ”とても”;
$c = ”たのしい”;
$a += $b;
$a++;
print $a;
?>
$a .= $b;
$a .= $c;
print $a;
?>
それぞれ、入力して保存し、実行して、結果を確かめてみよう!
26
変数名の規則
• 使える文字列
–
–
–
–
a
A
0
_
~ z
~ Z
~ 9 ※1文字目には使えない
(アンダーバー)
27
変数のデータ型
型の種類
英語名
解説
例
論理型
boolean
TRUE(真)かFALSE(偽)の
どちらか
$a = true;
整数型
integer
10進数・16進数(先頭が
0x)・8進数(先頭が0)
$a = 1234;
$a = -1234;
$a = 0123
$a = 0x1A
浮動小数点型
float
小数を扱う値
$a = 1.234
文字列型
string
「”」ダブルクォーテーション $a = ”Hello, World!”;
か「’」シングルクォーテー
ションで囲まれた値
配列
array
後述
オブジェクト
object
後述
リソース
resource
後述
NULL
null
変数に何も値が代入され
てない場合を表す。
$a = null;
28
文字列の扱い
• 文字列を表現する場合は、
– シングルクォーテーション
– ダブルクォーテーション
(’)か、
(”)で括る
• シングルクォーテーションやダブルクォーテー
ションを表示させたい
– 文字の前に「¥」を記述する
ファイル名: quote_hyouji.php
入力して、保存、転送、実行してみましょう
<?php
print 'I¥'ll be back. <br />';
print "¥"ダブルクォーテーション¥"を表示する。";
?>
29
実験
ファイル名: quote.php
入力して、保存、転送、実行してみましょう
<?php
$hensu1 = 'もも';
print
print
print
print
'1.くだものは
"2.くだものは
"3.くだものは
"4.くだものは
$hensu1 です。<br />';
$hensu1 です。<br />";
$hensu1です。<br />";
{$hensu1} です。<br />";
?>
30
課題(1)
• 次回までで面白いと思った記事を見つけ、記
事を要約して、感想を述べなさい。
• 記事はいくつでも可
• Wordなどのワープロでまとめる
• ファイル名
– kadai0518-1-学籍番号.doc
• メールで[email protected]に提出
• 締切:5/24 18:00まで
31
課題(2)
• 今日の実行結果(p.26まで)とプログラムを
Wordなどのワープロでまとめて、メールで
[email protected]に提出
• ファイル名: kadai0518-2-学籍番号.doc
• 締切:5/24 18:00まで
• 実行画面を画像として取得するには、取得し
たいウィンドウをクリックした後、
[ALT]+[PrintScreen]でクリップボードにコピーさ
れるので、その後、Wordで貼り付ける。
32