PHPでHTMLのフォーム(form)から送信されたデータを処理する方法について書いています。
Web開発では、ユーザーが使用するブラウザとのやり取りの一環としてフォームが頻繁に使用されます。
PHPでは、主に$_GETと$_POSTのスーパーグローバル変数を使用して、フォームから送信されたデータを取得します。
この記事では、基本的なPHPフォーム処理に焦点を当て、$_GETおよび$_POSTの使用方法を解説します。
フォームの基本構造
HTMLでフォームを作成するには、<form>要素を使用します。
以下は、基本的なフォームの構造です。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sample Form</title>
</head>
<body>
<form action="process.php" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
<button type="submit">送信する</button>
</form>
</body>
</html>
この例では、ユーザー名(username)とパスワード(password)の2つのフィールドを持つ簡単なフォームを作成しています。
<form>要素のaction属性には、フォームが送信されたときにデータを処理するPHPファイルのパス(process.php)を指定しています。
また、method属性にはデータの送信方法を指定しています。ここではpostメソッドを使用しています。
$_POSTを使用したデータの取得
postメソッドを指定すると、$_POST変数で値を受け取ることができます。
action属性で指定した、process.phpファイルに送信されます。
PHPスクリプト内で$_POSTを使用してフォームデータを取得するには、次のように行います。
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// $_POSTからデータを取得
$username = $_POST["username"];
$password = $_POST["password"];
// ここでデータの処理を行う
// 例: データベースへの挿入、認証などなど
}
?>
この例では、$_POSTを使用してusernameとpasswordの値を取得しています。
取得したデータは、データベースへの挿入や認証などの処理に使っていくことができます。
$_GETを使用したデータの取得
$_GETを使用してフォームデータを取得するには、フォームのmethod属性をgetに設定します。
<form action="process.php" method="get">
<!-- フォームの中身 -->
</form>
そして、PHPスクリプト内で$_GETを使用してデータを取得します。
<?php
if ($_SERVER["REQUEST_METHOD"] == "GET") {
// $_GETからデータを取得
$username = $_GET["username"];
$password = $_GET["password"];
// ここでデータの処理を行う
// 例: データベースへの挿入、認証など
}
?>
「送信する」ボタンを押すと、process.phpに対して、GETメソッドでデータが送信されます。
$_GETを使用すると、データがURLに含まれるため、ブラウザの履歴やブックマークとして保存されることに留意してください。
実際にブラウザで実行すると、urlに「?username=test&password=password」といった形で、送信したデータが表示されることが確認できます。
$_GETは画面遷移・検索結果の表示などで使用し、パスワードなどの機密性の高い情報は$_POSTを使用することが一般的です。
まとめ
この記事では、PHPでフォームデータを処理するための基本的な手順を解説しました。
$_GETと$_POSTを適切に使用することで、ユーザーからの入力データを取得できました。
フォームデータの処理においては、セキュリティ上の懸念にも留意し、適切なバリデーションやサニタイジングを実施するよう心がけましょう。

コメント