PHPでは情報を別のデータに受け渡すときにGETとPOSTの2つの方法(メソッド)が使われます。
GET
GETメソッドはURLの末尾に「?」をつけ、「パラメーター名="値"」という形式でデータを送ります。
そのせいで、URLにデータが表示されてしまい、誰からでも見ることができます。なので、フォームやECサイトなどの個人情報を扱うデータ送信には向いていません。
また送ることのできるデータ量が制限されています。テキストデータのみ送信可能です。
Internet ExplorerではURLに使用できる文字数が2,083文字と決まっており、パスに使用できる最大文字数は2,048文字となっています。
GETメソッドはデータをURLの末尾につけて送るので、制限されることになります。
URLなどを送信したい場合はGETを使いましょう。
POST
POSTメソッドで送るデータはWebブラウザ上には現れないので、秘匿性の高いデータやデータベースなど重要度の高いデータは必ずPOSTメソッドを使いましょう。
また、送ることの出来るデータ量も特に明確な制限があるわけでは無いので、大量のデータを送る際も必ず、POSTメソッドを使いましょう。
なので、基本的にはデータ送信の際のメソッドはPOSTと覚えておきましょう。
POSTの使い方
データを送信する方の設定
<form action="output.php" method="post">
データを受け取る側の設定
$name = htmlspecialchars( $_POST[ 'name' ], ENT_QUOTES, 'UTF-8' );
ENT_QUOTES
シングルクオートとダブルクオートを共に文字列に変換します。
POSTを使ったフォーム
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>フォームに入力した内容を取得する</title> <style> dt { float:left; width:200px; margin-right:30px; } dt,dd { margin-bottom:20px; } </style> </head> <body> <h1>フォームに入力した内容を取得する</h1> <form action="output.php" method="post"> <dl> <dt><label for="name">お名前:</label></dt> <dd><input type="text" name="name" id="name" size="20" maxlength="10" placeholder="山田太郎" required> </dd> <dt>性別:</dt> <dd> <input id="gender_male" type="radio" name="gender" value="男性" checked><label for="gender_male">男性</label> <input id="gender_female" type="radio" name="gender" value="女性"><label for="gender_female">女性</label> </dd> <dt><label for="message">お問い合わせ内容:</label></dt> <dd><textarea name="message" id="message" cols="50" rows="4"></textarea></dd> </dl> <input type="submit" value="送信する"> </form> </body> </html>
データを受け取る方のファイル(PHP)
<?php $name = htmlspecialchars( $_POST[ 'name' ], ENT_QUOTES, 'UTF-8' ); $gender = htmlspecialchars( $_POST[ 'gender' ], ENT_QUOTES, 'UTF-8' ); $message = htmlspecialchars( $_POST[ 'message' ], ENT_QUOTES, 'UTF-8' ); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>入力データの確認</title> </head> <body> <dl> <dt> お名前:</dt> <dd><?php echo $name; ?></dd> <dt> 性別:</dt> <dd><?php echo $gender; ?></dd> <dt> メッセージ:</dt> <dd><?php echo $message; ?></dd> </dl> </body> </html>