見出し画像

【HTMLフォーム】で渡せるデータとPOST/GET(PHP)を使った受け取り方

はじめに

PHPはサーバーサイドのスクリプト言語であり、HTMLフォームからデータを受け取り、処理するための強力な機能を提供します。

今回はPHPにフォームで渡せるデータの種類と、POST・GETメソッドの使い分けについてまとめてみました。


formで渡せるデータの種類

HTMLフォームはユーザーからの入力を収集し、サーバーに送信するための手段です。
PHPを使用してこれらのデータを処理する際、様々なタイプのデータをフォームから受け取ることができます。
主なデータの種類は以下のものがあります。

1.テキストデータ

・テキストフィールド(<input type = "text">)

(html)
<input type="text" name="username" placeholder="Enter your username">

・テキストエリア(<textarea>)

(html)
<textarea name="message" placeholder="Enter your message"></textarea>

2.数値データ

数値フィールド(<input type = "number")

(html)
<input type="number" name="age" min="1" max="100">

3.選択データ

・ラジオボタン(<input type = "radio">)

(html)
<input type="radio" name="gender" value="male"> Male
<input type="radio" name="gender" value="female"> Female

・チェックボックス(<input type = "checkbox")

(html)
<input type="checkbox" name="subscribe" value="newsletter"> Subscribe to newsletter

・セレクトボックス(<select>)

(html)
<input type="checkbox" name="subscribe" value="newsletter"> Subscribe to newsletter

4.ファイルデータ

・ファイル入力(<input type = "file">)

(html)
<input type="file" name="profile_picture">

5.隠しデータ

・隠しフィールド(<input type = "hidden">)

(html)
<input type="hidden" name="user_id" value="12345">


これらの入力フィールドを使用して、ユーザーからの様々な種類データを収集し、サーバーに送信することができます。
次に、データの送信方法について説明します。


POSTメソッドとGETメソッドの使い分け

HTMLフォームからデータを送信する方法には、主にPOSTメソッドとGETメソッドの2つがあります。
それぞれのメソッドには特定の用途や特性があります。

1.GETメソッド

GETメソッドはフォームデータをURLのクエリ文字列として送信します。
これは、以下のようにURLにデータが含まれる形になります。

(html)
<form method="get" action="submit.php">
  <input type="text" name="query"> ←(ユーザーが入力した値が格納)
  <input type="submit" value="Search">
</form>
(url=)submit.php?query=your_search_term

1-1.特徴
・データがURLに含まれるため、ブックマークや共有が容易。
・URLの長さ制限がある。(通常は2048文字)
・セキュリティ面で脆弱。(データがURLに表示されるため)
・主にデータの取得や検索など、状態を更新しないリクエストに使用される。

1-2.使用例
検索機能など、データを取得するためのリクエストにはGETメソッドが適しています。
以下は、検索フォームをGETメソッドで実装する例です。

(html)
<!DOCTYPE html>
<html>
<head>
  <title>Search Form</title>
</head>
<body>
  <form method="get" action="search.php">
    <label for="search">Search:</label>
    <input type="text" id="search" name="query">
    <input type="submit" value="Search">
  </form>
</body>
</html>

'search.php'にて、以下の様にGETリクエストの処理をします。

(search.php)
<?php
if (isset($_GET['query'])) {
    $searchQuery = $_GET['query'];
    echo "You searched for: " . htmlspecialchars($searchQuery);
}
?>

2.POSTメソッド

POSTメソッドは、フォームデータをHTTPリクエストの本文として送信します。
URLにはデータが含まれません。

(html)
<form method="post" action="submit.php">
  <input type="text" name="username">
  <input type="submit" value="Submit">
</form>

2-1.特徴
・データがURLに含まれないため、比較的セキュア。
・大量のデータを送信可能。(URLの長さ制限が無い)
・データの送信に適しており、ユーザーの状態を変更するリクエストに使用される。(フォームの送信、データベースの更新など)

2-2.使用例
ユーザー登録やログインフォームなど、データを送信してサーバー側で処理する場合にはPOSTメソッドが適しています。
以下は、ユーザー登録フォームをPOSTメソッドで実装する例です。

(html)
<!DOCTYPE html>
<html>
<head>
  <title>Registration Form</title>
</head>
<body>
  <form method="post" action="register.php">
    <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>
    <input type="submit" value="Register">
  </form>
</body>
</html>

'register.php'で、以下の様にPOSTリクエストのデータを処理します。

(register.php)
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST['username'];
    $password = $_POST['password'];

    // データベースに接続してユーザーを登録する処理(例示)
    // $conn = new mysqli($servername, $username, $password, $dbname);
    // $sql = "INSERT INTO users (username, password) VALUES ('$username', '$password')";
    // $conn->query($sql);

    echo "Registration successful for user: " . htmlspecialchars($username);
}
?>

まとめ

PHPのフォームで渡せるデータの種類には、テキスト/数値/ファイル/隠しデータなどがありました。
これらのデータはPOSTメソッドまたはGETメソッドを使用してサーバーに送信されます

GETメソッドはデータをURLのクエリ文字列として送信するため、主にデータの取得に使用されます。
POSTメソッドはデータをリクエスト本文に含めて送信するため、データの送信や状態を変更する際に適しています。

PHPを使ったフォーム処理の基本を理解することで、Web開発に役立てることができます。

本来は、セキュリティ面にもう少し考慮したデータの受け渡しをしなくてはならないのですが、それはまた別の記事で書こうと思います。

以上、HTMLのフォームで渡せるデータの種類とPOST/GETメソッドの使い分けに関する記事でした。

更新の励みになりますので、読んでみて少しでもよかったら、スキ・コメント・サポート宜しくお願い致します!!

この記事が気に入ったらサポートをしてみませんか?