PHP
PR

PHPフォームの基本|入力した文字を受け取る

PHP 3-2のフォームの基本として、入力した文字をPHPで受け取る流れを表したアイキャッチ画像
toshi
記事内に商品プロモーションを含む場合があります
最終更新:2026年10月1日

前回のPHP 3-1では、foreachを使って配列の中身を順番に取り出す方法を確認しました。

今回は、HTMLのフォームへ入力した文字を送信し、その値をPHPで受け取るところまで進みます。

フォームを使うと、ユーザーが入力した文字をPHPへ送ることができます。

たとえば名前の入力欄へ「Toshi」と入力して送信すると、PHP側でその文字を受け取り、

「こんにちは、Toshiさん!」

のように表示できます。

PHPが「用意しておいたデータを表示する」だけではなく、「ユーザーから送られたデータを受け取る」段階へ進むのが今回のポイントです。

この記事で分かること

この記事では、PHPフォームについて次の内容を整理します。

  • HTMLフォームの基本的な役割
  • フォームに入力した文字がPHPへ渡る流れ
  • formタグのactionとmethodの意味
  • inputタグのname属性が必要な理由
  • $_POSTで送信された値を受け取る方法
  • 受け取った文字を画面へ表示する方法
  • htmlspecialchars()を使って安全に表示する考え方
  • Laragonで実際にフォーム送信を確認する方法
  • フォーム処理でよくあるつまずきポイント

最初は「HTMLとPHPのどちらを書いているのか」が少し分かりにくく感じるかもしれません。

今回は、

「入力するのはHTML」

「受け取って処理するのはPHP」

という役割を意識しながら進めていきます。

Q
先に結論だけ読む

PHPフォームでは、HTMLのformタグを使って入力した値をPHPへ送信できます。

まずフォーム側を用意します。

<form action="result.php" method="post">
    <label for="name">名前</label>
    <input type="text" id="name" name="name">

    <button type="submit">送信する</button>
</form>
HTML

送信された値は、PHP側で $_POST を使って受け取れます。

<?php

$name = $_POST['name'] ?? '';
$safeName = htmlspecialchars($name, ENT_QUOTES, 'UTF-8');

echo 'こんにちは、' . $safeName . 'さん!';

?>
PHP

フォームへ「Toshi」と入力して送信すると、

こんにちは、Toshiさん!

と表示されます。

今回の基本は、

「フォームへ入力 → 送信 → PHPで受け取る」

という3段階です。

PHPのフォームとは?

フォームとは、ユーザーが文字などを入力して、その内容を送信するための仕組みです。

WEBサイトでは、たとえば次のような場面で使われています。

  • お問い合わせフォーム
  • 検索フォーム
  • ログイン画面
  • 会員登録
  • アンケート
  • コメント投稿

HTMLでは、フォームの入力欄や送信ボタンを作ることができます。

PHPは、そのフォームから送られてきた値をサーバー側で受け取って処理できます。

HTMLだけでも入力欄や送信ボタンは表示できます。

ただし、「入力された文字を受け取って処理する」部分では、PHPなどのサーバー側の処理が必要になります。

今回はHTMLとPHPを組み合わせて、その入口を確認します。

ここでは、HTMLフォームから送信された値をPHPで受け取る基本的な仕組みを確認しています。

実際のWordPressサイトでお問い合わせフォームを用意する場合は、こうした処理をすべて自作せず、フォームプラグインを利用する方法もあります。

WPFormsは、ドラッグ&ドロップでフォームを作成できるWordPress向けフォームプラグインです。今回学んでいるform・input・POSTといった仕組みを知っていると、フォームプラグインが何をしているのかも理解しやすくなります。

WPForms公式フォーム作成プラグイン

フォームからPHPへ送られる流れ

フォーム処理の流れを先に確認しておきます。

大きく分けると3段階です。

  1. ユーザーがフォームへ文字を入力する
  2. 送信ボタンを押してデータを送る
  3. PHPが送られた値を受け取る

今回の記事では、この流れを実際に作ります。

今回使うファイルを用意する

今回もLaragonの学習用フォルダーを使います。

PHP 3-2用として、次のフォルダーを作成します。

C:\laragon\www\toshilab-php\php-03-02\

この中に2つのファイルを作ります。

ファイル役割
form.html名前を入力して送信するフォーム
result.phpフォームから送られた名前を受け取って表示するPHP

確認するときは、LaragonでApacheを起動して、

http://localhost/toshilab-php/php-03-02/form.html

へアクセスします。

今回は2つのファイルを使うことで、

「送信する側」

と

「受け取る側」

を分けて確認します。

まずHTMLフォームを作る

最初に、フォームの基本形を見てみましょう。

<form action="result.php" method="post">
    <input type="text" name="name">
    <button type="submit">送信する</button>
</form>
HTML

このコードには、

  • form
  • input
  • button

が登場します。

formタグの中に入力欄と送信ボタンを配置しています。

ここから、それぞれの役割を分けて見ていきます。

formタグで送信先を指定する

今回のformタグは次の形です。

<form action="result.php" method="post">
HTML

ここで特に見ておきたいのが、

action

と

method

です。

部分今回の役割
action="result.php"入力したデータをresult.phpへ送る
method="post"POSTという方法でデータを送る

今回はPOSTを使います。

GETとPOSTの詳しい違いについては、次のPHP 3-3で整理します。

PHP 3-2ではまず、

「methodにpostと書くと、PHP側では $_POST で受け取れる」

という関係を確認できれば大丈夫です。

inputタグで名前を入力する

名前を入力する部分は次のコードです。

<input type="text" id="name" name="name">
HTML

type="text" は、文字を入力するための欄を作ります。

今回特に重要なのが、

name="name"

です。

このname属性が、PHPへ値を送るときの名前になります。

name="name"

と書いた入力欄へ「Toshi」と入力すると、送信時には、

「nameという名前のデータにToshiという値が入っている」

という形でPHPへ渡されます。

送信ボタンを作る

送信ボタンは次のように書きます。

<button type="submit">送信する</button>
HTML

type="submit" は、フォームの内容を送信するためのボタンです。

このボタンを押すと、formタグで指定した、

result.php

へデータが送られます。

form.htmlを完成させる

ここまでをまとめて、form.html を完成させます。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PHPフォームの練習</title>
</head>
<body>

    <h1>名前を入力してください</h1>

    <form action="result.php" method="post">
        <label for="name">名前</label>
        <input type="text" id="name" name="name">

        <button type="submit">送信する</button>
    </form>

</body>
</html>
HTML

ファイルを保存したら、

http://localhost/toshilab-php/php-03-02/form.html

へアクセスします。

画面に、

  • 名前入力欄
  • 送信するボタン

が表示されれば、フォーム側の準備はできています。

まだ送信先の result.php を作っていないため、次にPHP側を用意します。

PHPで送信された文字を受け取る

フォーム側では、

name="name"

と指定しました。

PHPでは、このnameを使って送信された値を受け取れます。

基本となる形は次です。

$_POST['name']
PHP

$_POST は、POSTで送信されたデータを受け取るためにPHPが用意している仕組みです。

今回の、

$_POST['name']

は、

「POSTで送られてきたデータの中から、nameという名前の値を取り出す」

という意味です。

$_POSTは配列のように考えると分かりやすい

PHP 2-4では配列を学びました。

たとえば、

$fruits[0]

のように、配列から値を取り出しました。

フォームで使う $_POST も、複数の送信データをまとめて扱える仕組みです。

今回は、

$_POST['name']

として、nameという名前のデータを取り出しています。

今の段階では、$_POST の細かい仕組みをすべて覚える必要はありません。

まずは、

name="name" で送る

   ↓

$_POST['name'] で受け取る

という対応関係を覚えておくと分かりやすくなります。

受け取った文字を変数へ入れる

送信された名前を、PHPの変数へ入れてみます。

$name = $_POST['name'] ?? '';
PHP

ここでは、

$name

という変数へ、フォームから送信された値を入れています。

?? ''

という部分もありますが、これは値が送信されていないときに空の文字列を使うための書き方です。

今回の中心は、

$_POST['name']

から値を受け取って、

$name

へ入れている部分です。

受け取った文字を安全に表示する

フォームから送られる文字は、ユーザーが自由に入力できます。

そのため、受け取った文字をそのままHTMLとして表示するのではなく、表示用に変換してから使います。

今回は htmlspecialchars() を使います。

$safeName = htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
PHP

htmlspecialchars() は、入力された文字にHTMLとして意味を持つ記号などが含まれていても、そのままHTMLとして実行されにくい形へ変換するために使います。

フォームの値を受け取ることと、安全に画面へ表示することは別の処理です。

今回の記事では、

  1. $_POST で受け取る
  2. htmlspecialchars() で表示用に変換する
  3. echoで表示する

という順番にします。

result.phpを完成させる

それでは、送信された名前を受け取って表示する result.php を作ります。

<?php

$name = $_POST['name'] ?? '';
$safeName = htmlspecialchars($name, ENT_QUOTES, 'UTF-8');

?>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>送信結果</title>
</head>
<body>

    <h1>送信結果</h1>

    <p>
        <?php echo 'こんにちは、' . $safeName . 'さん!'; ?>
    </p>

</body>
</html>
PHP

このコードでは、最初にフォームから送られた名前を受け取っています。

次に htmlspecialchars() で表示用に変換し、

最後にechoで、

「こんにちは、○○さん!」

と表示します。

Laragonで実際に送信してみる

ここまでできたら、実際に動かしてみます。

LaragonでApacheが起動していることを確認してください。

ブラウザで、

http://localhost/toshilab-php/php-03-02/form.html

を開きます。

名前の入力欄へ、

Toshi

と入力します。

そして、

「送信する」

ボタンを押します。

正常に動作すると result.php へ移動し、次のように表示されます。

こんにちは、Toshiさん!
Plaintext

フォームへ入力した文字がPHP側へ渡り、その値を使って表示内容が変わったことを確認できます。

入力する名前を変えてみる

フォームへ戻って、今度は別の名前を入力してみます。

たとえば、

PHP太郎

と入力して送信します。

すると表示結果も変わります。

こんにちは、PHP太郎さん!
Plaintext

PHPコードそのものを書き換えていないのに、フォームから送られた内容によって表示が変わりました。

ここがフォーム処理の大切なポイントです。

PHP側にあらかじめ「Toshi」や「PHP太郎」と書いているのではありません。

ユーザーが入力した文字をPHPが受け取って、その値を使って表示しています。

name属性と$_POSTの関係

ここはフォーム処理で特に重要なので、もう一度整理します。

HTML側:

<input type="text" name="name">
HTML

PHP側:

$_POST['name']
PHP

この2つは、name という文字でつながっています。

HTML側PHP側意味
name="name"$_POST['name']nameという名前で送られた値を受け取る

フォームの入力欄を増やしていくと、この対応関係がより重要になります。

PHP 3-4のお問い合わせフォームでも、この考え方を使います。

nameを書かなかった場合

たとえば、入力欄を次のように書いたとします。

<input type="text">
HTML

このコードには name 属性がありません。

画面には入力欄が表示されますが、PHP側で、

$_POST['name']

として受け取るための名前がありません。

正しくは、次のようにnameを付けます。

<input type="text" name="name">
HTML

フォームで「入力欄が見えている」ことと、「その値をPHPへ送れる」ことは同じではありません。

PHPへ値を渡すためには、今回のようにname属性を意識することが大切です。

PHPフォームでよくあるつまずきポイント

フォームがうまく動かない場合は、次の項目を順番に確認してみましょう。

actionのファイル名が違う

今回のフォームでは、

action="result.php"

としています。

実際のファイル名も、

result.php

になっているか確認します。

results.php

など、少しでも名前が違うと正しい送信先を開けません。

methodと$_POSTが合っていない

今回は、

method="post"

で送信しています。

そのためPHP側では、

$_POST

を使っています。

GETとの違いや使い分けについては、次のPHP 3-3で詳しく整理します。

inputにname属性がない

入力欄へ文字を書けても、name属性がなければ今回の方法ではPHP側から取り出せません。

次の形になっているか確認します。

name="name"

$_POSTの名前が違う

HTML側が、

name="name"

なら、PHP側も、

$_POST['name']

とします。

$_POST['user']

など別の名前にすると対応しません。

form.htmlを直接ダブルクリックしている

今回もLaragonを使って確認します。

ファイルを直接開くのではなく、

http://localhost/toshilab-php/php-03-02/form.html

からアクセスします。

Apacheが起動していない

LaragonのApacheが停止していると、PHPを実行できません。

Laragonを開いてApacheが起動していることを確認してください。

今日のまとめチェック

この記事の内容は、次のポイントが分かればOKです。

  • HTMLフォームから値を送信できると分かった
  • formタグのactionが送信先を指定すると分かった
  • 今回はmethodにpostを使った
  • inputのname属性がPHP側の受け取り名になると分かった
  • $_POST['name'] でnameの値を受け取れると分かった
  • 受け取った値を変数へ入れられると分かった
  • htmlspecialchars() を使って表示用に変換する理由が分かった
  • フォームの入力内容によってPHPの表示結果を変えられた
  • HTML側のnameとPHP側の $_POST が対応していると分かった

全部を暗記しなくても大丈夫です。

まずは、

「HTMLで入力する」

   ↓

「送信する」

   ↓

「PHPの $_POST で受け取る」

という流れを覚えておきましょう。

まとめ

今回は、PHPフォームの基本として、入力した文字をPHPで受け取る方法を確認しました。

フォーム側では、

<form action="result.php" method="post">
    <input type="text" name="name">
    <button type="submit">送信する</button>
</form>
HTML

のように、入力欄へnameを付けてPOSTで送信しました。

PHP側では、

$name = $_POST['name'] ?? '';
$safeName = htmlspecialchars($name, ENT_QUOTES, 'UTF-8');

echo $safeName;
PHP

として、送信された値を受け取りました。

そして、表示するときには htmlspecialchars() を使ってからechoで出力しました。

PHP 3-1までは、あらかじめPHPコードの中へ用意したデータを扱っていました。

今回からは、

「ユーザーが入力したデータをPHPが受け取る」

というWEBアプリケーションらしい処理へ一歩進みました。

PR:最初の1冊(必要な方だけ)

PR:PHP学習の最初の参考書として、必要な方だけ見てください。
記事内の内容だけでも進められますが、手元に1冊あると、
PHPの基本文法やフォーム処理をまとめて確認しやすくなります。
※価格や在庫、版数は変わるため、最終確認はリンク先でお願いします。

次に読む

今回使ったPOSTだけでなく、フォームから値を送るもう1つの代表的な方法であるGETについて確認し、それぞれをどのように使い分けるのかを学びます。

PHP 3章の流れ

PHP 3章では、配列とフォーム処理を学びます。

  • PHP 3-1:PHPのforeach。配列の中身を順番に表示する
  • PHP 3-2:PHPフォームの基本。入力した文字を受け取る
  • PHP 3-3:GETとPOSTの違い。フォーム送信の基本を整理する
  • PHP 3-4:PHPで簡単なお問い合わせフォームの形を作る

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

ABOUT ME
toshi
toshi
フルスタックエンジニア
C型肝炎や感染症の闘病を経て現在通院中
フリーランスとして今日を生きる、それがすべて。
静かな光の中で、歩みを止めずに生きていく。
実験大好きなので色々とやっていきます。
記事URLをコピーしました