PHPにおけるセッションとフォーム

2つのPHPファイルがあるとします。ファイル test1.php に、ユーザーに2つの数値を 尋ねるフォームを配置しましょう:

test1.php<form method="GET">
  <input name="num1">
  <input name="num2">
  <input type="submit">
</form>

この同じファイルに、フォームを処理するコードも配置します。 このコードでは、入力フィールドのデータをセッションに記録します:

test1.php<?php
  session_start();
  
  if (!empty($_GET)) {
    $_SESSION['num1'] = $_GET['num1'];
    $_SESSION['num2'] = $_GET['num2'];
  }
?>

重要な注意点:このファイルでは、フォームを処理するコードは フォーム自体より前に配置する必要があります。その理由は、 このコードではセッションを扱っており、その前に 何も画面に出力があってはならないからです。

次に、ファイル test2.php で、 セッションに保存された数値の合計を求めましょう:

test2.php<?php
  if (!empty($_SESSION)) {
    echo $_SESSION['num1'] + $_SESSION['num2'];
  }
?>

これはどのような順序で動作するのでしょうか?まず、 ユーザーはページ test1.php にアクセスし、 フォームに記入してボタンを押します。その後、 ユーザーは再び test1.php ページに戻りますが、 今度は送信されたフォームデータと共に戻ります。 これにより、フォームデータをセッションに書き込む 条件分岐に入ります。

その後、ユーザーは手動でページ test2.php にアクセスする必要があります。 そしてそこで、入力された数値の合計を確認できます。

疑問に思うかもしれません:なぜこのように複雑にするのでしょうか? 結局のところ、フォームを直接 test2.php ページに 送信することもできたはずです。このケースでの利点は、 フォーム自体とその処理コードが同じページに配置されることです。 もちろんこれは常に便利とは限りませんが、時には必要とされることがあります。

Задание 1

1つのページでフォームを使用して、ユーザーに 姓、名、年齢を尋ねてください。これらのデータを セッションに記録してください。別のページに アクセスした際に、これらのデータを画面に表示してください。