Pages

Subscribe:

2011-12-31

PHPでのデータの受け渡し~POST

今回はPHPでのデータの受け渡しについてまとめます。
データを受け渡すことで、フォームを使ってデータを送信したり、
一部分だけを変更して個々のページを作ったりすることができます。

データの受け渡しはHTMLのタグとPHPのプログラムを組み合わせて行われます。
とくにフォームを使った受け渡しは実用性もあり、
これまでHTMLでしかフォームを作ったことがない場合、
実際にボタンが押されたときの仕組みが分かるようになるので
これまでよりも使い道が見えていて理解しやすいのではないかと思います。


GET、POST、REQUEST

データの受け渡しには大きくふたつの方法があります。
データを目に見える形で受け渡すか見えない形で受け渡すかの違いです。
データを見える形で受け取るのが「GET」、
見えない形で受け取るのが「POST」です。
また、その両方の機能をあわせもつのとして「REQUEST」というものもあります。

急にこのような言葉だけ出されても理解しづらいと思います。
まずは分かりやすい例として、フォームの動きで「POST」の使い方を
説明していこうと思います。

フォームと「POST」

フォームといえば会員登録やお問い合わせ、アンケートなどなど、
パソコンを触っていれば遭遇することが多いものです。
そういったフォームはHTMLのformタグを使い、基本的な枠を作ることができ、
tableタグやCSSを使って見た目をきれいに整えることができます。

ただ、それだけでは実際に動かしてみることができず、
自分はformタグの属性なども何に使うのかよく分からないまま、
あいまいにしてしまっているところがありました。
とくに、フォームの要素にそれぞれある「name」属性は
PHPでフォームを動かす時に重要になります。

まずはPHPファイルに簡単にテキストボックスと送信ボタンを作ります。
<html>
<head>
<title>formの練習</title>
</head>
<body>
<form action="post_pra.php" method="post">
    お名前<input type="text" name="name">
    <input type="submit" name="send" value="送信">
</form>
</body>
</html>
ここでポイントになるのはformタグの属性です。
「action」には「submit」ボタンが押されたときに遷移するページのパスを書きます。
今回は同じページにリンクするので、formを書いたこのファイル名を記述します。
「method」はデータをどのように受け渡すかを書くところなので、
今回は見えない形で受け渡すため「post」と記述します。

また、テキストボックスを作るタグには「name」属性で名前を付けます。
この名前はPHPでデータを受け取る際に使用することになるので、
その要素に入力されたデータを送信したい場合は必ず必要な部分になります。

名前のつけ方ですが、フォームの要素が複数ある場合、
同じ名前を付けることはできません。
名前ならname、住所ならaddressといった具合に、
その要素の内容に則したものにするのが分かりやすいと思います。
とりあえずここでは自分の名前を打ち込むつもりなので、
「name」という名前を付けました。

ブラウザに表示してみると以下のようになります。
1行のテキストボックスと送信ボタンです。

さらに、同じファイルにプログラムを記述していきます。
ここで「POST」が登場します。
データを見えない形で受け取るのがPOSTです。
フォームの場合、個人情報が含まれる場合が多いので、
基本的にPOSTを利用します。

データは「$_POST[' ']」という形で受け取ることができます。
コーテーションで囲った部分にフォームのテキストボックスで指定した
name属性の値を記述することでそこに入力されたデータを受け取ることができます。

受け取ったデータを変数に代入し、表示させてみます。
プログラムは以下のような形になります。
<?php
$name = $_POST['name'];

echo '入力されたお名前は『'.$name.'』です。';
?>
実際に、テキストボックスに文字を入れ送信してみます。

データの受け渡しができました!
表示されないなど、エラーが出る場合、formのactionのパスが違っていたり、
name属性と「$_POST[' ']」の中身があっていなかったりすることが
多いので確かめてみてください。


このように実は意外と簡単にフォームは動きます。
ただ、練習する上では良いのですが、
そのままの状態ではどんなデータも入力することができてしまいますし、
逆に何も入力しなくても送信できてしまう状態です。

実際に使えるフォームを作るには、
入力の有無や、全角・半角等入力された内容の確認、
悪戯防止なども考えエラーチェックをかけるなど、 セキュリティ対策をしなくてはなりません。
その話に関してはまだ自分も勉強不足なのでまたの機会になりますが、
対策が必要だということは知っておくべきだと思います。

データの受け渡しについて感覚がつかめたでしょうか。
次回はGETについてまとめます。

0 件のコメント:

コメントを投稿