PHP $_POST
1. PHP $_POST の概要
$_POST スーパーグローバルは、HTTP POST メソッドを通じて送信された変数の配列を保持します。
PHP のスーパーグローバルは組み込みの変数であり、関数の内部や外部を問わず、すべてのスコープ(Scopes)から常にアクセスすることができます。
2. HTML フォームにおける $_POST
HTML フォームの method 属性が "post" に設定されている場合、そのフォームは HTTP POST メソッド経由でデータを送信します。
これを実演するために、まずシンプルな HTML フォームを作成します。
HTML ファイル:
<html>
<body>
<form method="post" action="demo_request.php">
名前: <input type="text" name="fname">
<input type="submit" value="送信">
</form>
</body>
</html>ユーザーが送信ボタンをクリックすると、フォームデータは <form> タグの action 属性で指定された PHP ファイルに送信されます。
その PHP ファイル内では、$_POST 変数を使用して入力フィールドの値を取得することができます。
PHP ファイル:
<?php
// 'fname' フィールドの値を取得し、サニタイズする
$name = htmlspecialchars($_POST['fname']);
echo $name;
?> 注意:$_POST などのスーパーグローバルから取得したデータを使用する前には、XSS(クロスサイトスクリプティング)攻撃などのセキュリティ脆弱性を防ぐために、必ずデータのバリデーション(検証)とサニタイズ(無害化)を行ってください。上記の例で使用している htmlspecialchars() 関数はその代表的な手法の一つです。より堅牢なフィルタリングが必要な場合は、PHP の filter 関数群を使用することをお勧めします。
3. フォームと処理コードの統合例
以下の例では、HTML フォームと PHP コードを同一の PHP ファイル内に配置し、リクエストを自己処理する構造にしています。
実行例:
<html>
<body>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
名前: <input type="text" name="fname">
<input type="submit" value="送信">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// $_POST を使用して入力値を取得
$name = htmlspecialchars($_POST['fname']);
if (empty($name)) {
echo "名前が入力されていません。";
} else {
echo "こんにちは、" . $name . " さん。";
}
}
?>
</body>
</html>