<form method="post"action="receive.php"> 料理名:<input type="text"name="recipe_name"required> <input type="submit"value="送信"> </form>
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");} ?>