PHPの$_POSTとは?フォームからのデータを安全に受け取る方法
$_POST は、PHPでフォームから送信されたデータを受け取るためのスーパグローバル変数です。
method属性にpost
が指定されたフォームからの送信内容を扱うときに使用します。
基本的な使い方
HTML側(form.html):
<form method="post" action="receive.php">
名前:<input type="text" name="name"><br>
メール:<input type="email" name="email"><br>
<input type="submit" value="送信">
</form>
PHP側(receive.php):
$name = $_POST["name"];
$email = $_POST["email"];
echo "ようこそ、" . htmlspecialchars($name) . "さん!<br>";
echo "メールアドレス:" . htmlspecialchars($email);
注意: ユーザーからの入力は必ず htmlspecialchars()
などでサニタイズしましょう。
$_GETとの違い
比較項目 |
$_POST |
$_GET |
送信方法 |
HTTP POST |
HTTP GET(URLパラメータ) |
URLに表示されるか |
表示されない(非表示) |
表示される |
データ量 |
大きいデータ向き |
少量のデータ向き |
用途 |
ログイン、登録、注文など |
検索、ページ指定など |
存在確認と安全な取得
存在しないキーを参照すると警告が出るため、isset()
や empty()
を使いましょう。
if (isset($_POST["name"])) {
$name = htmlspecialchars($_POST["name"]);
echo "こんにちは、" . $name . "さん";
}
filter_input関数を使った取得
より安全に入力を取得したい場合は、filter_input()
関数を使うのがおすすめです。
$email = filter_input(INPUT_POST, "email", FILTER_SANITIZE_EMAIL);
まとめ
$_POST
はフォームから送られたPOSTデータを受け取る配列
- HTMLのフォームで
method="post"
を指定する必要がある
- データはURLに表示されないため、機密性の高い情報に向いている
htmlspecialchars()
などでサニタイズを行う
- 存在チェックや
filter_input()
の使用でより安全に
$_POST は、ユーザーからの情報を扱うフォーム処理において非常に重要な役割を担います。
セキュリティに配慮しつつ、安全にデータを扱えるようにしておきましょう。