• 検索結果がありません。

~モバイルを知る~ 日常生活とモバイルコンピューティング

N/A
N/A
Protected

Academic year: 2021

シェア "~モバイルを知る~ 日常生活とモバイルコンピューティング"

Copied!
26
0
0

読み込み中.... (全文を見る)

全文

(1)

Webプログラミングの基礎

PHPの基礎(6) ~POST

(2011/06/22)

政策情報学部

渡辺恭人

riho-m@cuc.ac.jp

メーリングリスト:riho-m-rg11@cuc.ac.jp:

資料ページ: http://www.cuc.ac.jp/~riho-m/rg11/

(2)

入力された文字を受け取りPOSTで

送信する部分(post.htm)

2

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html lang="ja">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>フォームデータの取得</title>

</head> <body>

<form method="POST" action="post.php"> 名前:

<input type="text" name="nam" size="15" /> <input type="submit" value="送信" />

</form> </body> </html>

(3)

入力された文字を受け取りPOSTで

送信する部分(post.htm)

• 入力された文字を受け取る部分(HTML)

– nam

• テキストボックス(<input>タグ)のnameオプションで指

定された要素名

• 表示する部分(PHPで記述)

– HTMLフォーム(<form method=“POST”>)で入力さ

れた文字をPHPで取得するには、 $_POST[ ’ 要素

名 ’ ]とする

– この$_POSTがスーパーグローバル変数

• オプションがGETなら、$_GETで取得

3

(4)

post.htmから送信されたデータを

受け取り表示する部分(post.php)

4

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html lang="ja">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>フォームデータの取得</title> </head> <body> こんにちは、<?php print($_POST['nam']); ?>さん! </body> </html>

(5)

フォームデータの取得(複数値)

• チェックボックスを使う場合

– 好きな食べ物をクリックでチェックさせ選択させる

(複数回答可)

– 送信後、どれを選んだかを表示

• 入力して送信する部分

• 入力されたデータを受け取り表示する部分

5

(6)

入力して送信する部分

(post2.htm)

6

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html>

<head>

<title>フォームデータの取得(複数値対応)</title> </head>

<body>

<form method="POST" action="post2.php"> 好きな食べ物は?:

<input type="checkbox" name="food[ ]" value="りんご" />りんご <input type="checkbox" name="food[ ]" value="みかん" />みかん <input type="checkbox" name="food[ ]" value="メロン" />メロン <input type="submit" value="送信" />

</form> </body> </html>

(7)

入力されたデータを受け取り

表示する部分(post2.php)

7

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>フォームデータの取得(複数値対応)</title> </head> <body> あなたが好きな食べ物は、 <?php print(join($_POST["food"],"と")); ?> ですね。 </body> </html>

(8)

フォームデータの取得(複数値)

• 一つの要素が複数の値を持つ場合

– <input type=“checkbox” name=“food

[]

” ….

– [] によって、要素が複数の値を持つことをPHP側

が認識できる

• joinという関数で配列の要素を「と」で連結す

– 1番目の値のみを取得したい場合は、

• $_POST[”food”][0]と書く

8

(9)

ファイルの構成

• 2ファイル構成

– フォームで入力したデータをPOSTで送信する

HTML

– そのHTMLからPOSTで送信されたデータを受信す

るPHP

• 1ファイルでもできる

– 動作に注意

– 自分自身を呼び出すときは、

<form method="POST">

のように、action=は書かない。

9

(10)

おみくじプログラム

(前半: omikuji.php)

10

<?php

if (isset($_POST["start"])) {

$uranai_data[] = "大吉です。";

$uranai_data[] = "中吉です。";

$uranai_data[] = "吉です。";

$uranai_data[] = "末吉です。";

$uranai_data[] = "凶です。";

$max = count($uranai_data) - 1;

$result = rand(0, $max);

$message = "あなたの運勢は・・・" . $uranai_data[$result];

} else {

$message = "あなたの運勢をチェックしましょう。";

}

(11)

おみくじプログラム

(後半: omikuji.php)

11

<html> <head> <title>おみくじプログラム</title> </head> <body> <h2>今日のおみくじ</h2> <h4>「おみくじを引く」ボタンをクリックすると結果が表示されるよ。</h4> <form method="post">

<textarea name="result" rows="5" cols="40"><?php print $message;?></textarea> <br>

<input type="submit" name="start" value="おみくじを引く"> </form>

</body> </html>

(12)

おみくじプログラム(解説)

• プログラムは上から順に実行される

• PHPの部分はフォームで入力したデータを受

け取る部分⇒先に実行されると困る

• したがって、フォームで入力したデータを受け

取ってないかどうかを判断する必要がある。

• Isset関数でPOST変数に変数がセットされてい

るかどうかをチェック

12

if (isset($_POST["start"])) {

(13)

おみくじプログラム(解説)

• おみくじの結果が格納された配列の個数を取

– 0から順に割り振られる

– 配列の最大番号は、個数-1になる

– これを$maxに代入

• rand関数で「0から最大数$max」までの値(0

~4)から一つをランダムで選択し、その値を

$result変数に格納する

13

$max = count($uranai_data) - 1;

(14)

おみくじプログラム(解説)

• ランダムで選ばれた値をおみくじ結果の配列

から取得して、message変数にメッセージを格

納する

14

$message = "あなたの運勢は・・・" . $uranai_data[$result];

(15)

課題

• おみくじのプログラムを参考にして、生まれた

年(西暦)を入力すると、干支を表示するプロ

グラムを作ってください。

• 以上、作ったプログラムと実行結果をWordに

まとめ、

メーリングリストに

提出してください。

• ファイル名 例: kadai-0622-学籍番号.doc

• 締切:

6/28

23:59

15

(16)

日本の干支(十二支)

16

0

1

うし

2

とら

3

4

たつ

5

6

うま

7

ひつじ

8

さる

9

とり

10

いぬ

11

(17)

ヒント

• 干支のデータは配列変数に順に代入して管

理する。

– 例、eto_data[0]=”ねずみ”

• 入力した西暦がどの干支かを判断するところ

がポイント

– 例、eto_data[0]の「ねずみ」年は2008年なので、

年に足すか引くかして12で割った余りが0になる

ようにする。

– 2008から4を引いた2004を12で割ると余りが0に

なるので、これを計算式にする(%を使う)

17

(18)

ヘッダー情報の取得

• サーバにアクセスしたクライアントの種類、対

応言語、リンク元のURLなどを表示する

http://www.studyinghttp.net/header

を参照

• $_POSTと似た変数の$_SERVERを使う

– スーパーグローバル変数という

• 書式

– $_SERVER[”ヘッダー名”]

18

(19)

ヘッダー情報の取得

(head.htm)

19

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>ヘッダ情報の取得</title> </head> <body> <a href="head.php">ここをクリック</a> </body> </html>

(20)

ヘッダー情報の取得

(head.php)

20

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>ヘッダ情報の取得</title> </head> <body> User-Agent -> <?php print($_SERVER["HTTP_USER_AGENT"]); ?><br /> Accept-Language -> <?php print($_SERVER["HTTP_ACCEPT_LANGUAGE"]); ?><br /> Referer -> <?php print($_SERVER["HTTP_REFERER"]); ?><br /> </body> </html>

(21)

文字化けについて

• Webアプリケーションでよく起きるトラブル

– データの入出力・メール送信などの個所で起きる

– Webブラウザ、Webサーバ、PHP、データベースサ

ーバなどの間で文字コードが正しく設定されてい

ないときに起こりうる

• 文字化けの原因

– 文字にはコードが多数ある(日本語にも数種類)

• 使う文字コードを統一するのも一つの方法

– PHPでどのように設定されているかを確認する

• Phpinfo()の表示のうち、mbstringカテゴリ

21

(22)

文字コード

• JIS(ISO-2022JP)

– 電子メールでの日本語

の文字コード

• SJIS(Shift JIS)

– WindowsやMS-DOS等で

普及した日本語の文字

コード

• EUC( Extended UNIX

Code)

– UNIXシステムで普及

• UTF-8

– コンピュータ上で多言語

の文字を単一の文字コ

ードで取り扱うために

1980年代に提唱された

文字コードである

Unicodeの一つ

22

(23)

PHPでの設定方法

• 3つ

– php.iniを設定

• 一般ユーザにはできない

– .htaccessを設定

• 使えないレンタルサーバもある

– PHPのスクリプト内で設定

23

(24)

PHPスクリプトの中で設定する

24

<?php

mb_internal_encoding ("

UTF-8

");

mb_http_output("

UTF-8

");

ob_start("mb_output_handler");

header("Content-Type: text/html; charset=

UTF-8

");

print "日本語を出力する";

?>

EmEditorで保存するときに、文字コードをUTF-8に

(25)

.htaccessファイルで設定する

• .htaccessファイル

– WebサーバのApacheの設定やPHPの設定、ユー

ザの認証を設定する

– Windowsでは、ドット「.」で始まるファイル名はつく

れないので、ドットのないファイル名で作成し、

www2に転送してから変更する

• 次の1行をhtaccessというファイル名で作成す

– WinSCPで転送して、ファイル名を .htaccessに変更

25

(26)

文字コードの確認

• 以下のプログラムを入力・保存し、WinSCPで

www2に転送してください

• Internet Explorerで実行する

• default_charsetの欄を見る

26

<?php

phpinfo();

?>

参照

関連したドキュメント

「Remote NDIS based Internet Sharing Devise」を誤って削除してしまった。 → 資格確認端末の再起動を行っていただくことで、ネットワーク接続に「Remote NDIS

タップします。 6通知設定が「ON」になっ ているのを確認して「た めしに実行する」ボタン をタップします。.

太宰治は誰でも楽しめることを保証すると同時に、自分の文学の追求を放棄していませ

手動のレバーを押して津波がどのようにして起きるかを観察 することができます。シミュレーターの前には、 「地図で見る日本

“〇~□までの数字を表示する”というプログラムを組み、micro:bit

パキロビッドパックを処方入力の上、 F8特殊指示 →「(治)」 の列に 「1:する」 を入力して F9更新 を押下してください。.. 備考欄に「治」と登録されます。

能率競争の確保 競争者の競争単位としての存立の確保について︑述べる︒

 今日のセミナーは、人生の最終ステージまで芸術の力 でイキイキと生き抜くことができる社会をどのようにつ