WEBサイト制作の勉強

WEBサイト制作の勉強の為の解説ブログです。

フェリカテクニカルアカデミー

GETとPOSTの違いと使い分け

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>