form.htmlreceive.php

<form method="post"action="receive.php">
料理名:<input type="text"name="recipe_name"required>
<input type="submit"value="送信">
</form>

<?php
print_r($_POST);
?>

サーバーの動作とユーザーの操作の流れ

サーバーの設定: ユーザーの操作:

サーバーには Apache または Nginx がインストールされている.

Apache / Nginx は webページのリクエストを受け取り, 適切なレスポンスを返すプログラムです.
Nginx は Engine X (エンジン・エックスと読む).

Apache または Nginx は HTTP(HyperText Transfer Protocol) と
FTP(File Transfer Protocol) というプロトコルを使用して動作する
ウェブ・サーバー・ソフトウェア.

Apache/Nginx の役割
クライアントに対して、リクエストの結果を HTTP レスポンスとして返す

ユーザーの操作:
今, サーバーにあらかじめ form.html と receive.php が置いてあるとする.

ユーザー(クライアント)はブラウザで https://〜/form.html を参照する.

form.html には タグform と タグinput が二つ記述してある.

form の attribute である method="post" の post は
「データをサーバーに送る」HTTP プロトコルのリクエスト・メソッド.

attribute action="receive.php" によって post は receive.php に送信されることになる.

送信ボタンを押すことは ブラウザが HTTPリクエストをサーバーに送信することである.

ユーザーは タグform の入れ子の input に文字を入力する.
その後, もう一つの input type="submit" で送信ボタンを押す.

post は PHP のスーパーグローバル変数なので, ここで
print_r が「データを構造的に表示しなさい」
$_POST が「受け取ったデータ」が作動する.

php は html タグと文字を生成して返す.
ユーザーのブラウザは action という attribute の URL に変更されて
Array ( [recipe_name] => A ) という結果が表示される. タグなしで直接テキストが出力されている 状態. 問題: form.html にアクセスして送信ボタンを押す前に receive.php にアクセスしたら何が表示されるのか?



A.htmlR.php

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>入力フォーム</title>
</head>
<body>
入力フォーム<br>
<form method="post"action="R.php">
料理名:<input type="text"name="recipe_name"required>
<input type="submit"value="送信">
</form>
</body>
</html>

<?php
$recipe_name=$_POST["recipe_name"] ?? null;
if($recipe_name)
{echo "料理名:" . htmlspecialchars($recipe_name,ENT_QUOTES,"UTF-8");}
?>