Formで渡せるデータとPHPのPOST/GETを使った受け取り方

プログラミング

はじめに

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

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

 

formで渡せるデータの種類

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

主なデータの種類は以下のものがあります。

 

1.テキストデータ

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

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

 

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

<textarea name="message" placeholder="Enter your message"></textarea>

 

2.数値データ

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

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

 

3.選択データ

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

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

 

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

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

 

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

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

 

4.ファイルデータ

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

<input type="file" name="profile_picture">

 

5.隠しデータ

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

<input type="hidden" name="user_id" value="12345">

 

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

 

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

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

 

1.GETメソッド

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

<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メソッドで実装する例です。

<!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にはデータが含まれません。

<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メソッドで実装する例です。

<!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開発に役立てることができます。

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

コメント

タイトルとURLをコピーしました