我在php表单输出上得到了一个非常奇怪的结果

Here is my code:

<h2> Simple Form </h2>
<form action="" method="post">
First Name: <input type="text" name="firstName">
Last Name: <input type="text" name="lastName"><br /><br />
<input type="submit">
</form>
<br />
Welcome,
<?php
echo $_POST['firstName'];
echo " ";
echo $_POST['lastName'];
?>
!
<hr>
<h2>POST Form</h2>
<h3>Would you like to volunteer for our program?</h3>
<form action="" method="post">
Name: <input type="text" name="postName">
Age: <input type="text" name="age"><br /><br />
<input type="submit">
</form>
<br />
Hello,
<?php
echo $_POST['postName'];
?>
!
<br>
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $age = $_POST['age'];
    if ($age >= 16) {
        echo "You are old enough to volunteer for our program!";
    } else {
        echo "Sorry, try again when you're 16 or older.";
    }
}
?>
<hr>
<h2>GET Form</h2>
<h3>Would you like to volunteer for our program?</h3>
<form method="get" action="<?php echo htmlspecialchars($_SERVER["REQUEST_URI"]); ?>">
<input type="hidden" name="p" value="includes/forms.php">
Name: <input type="text" name="getName">
Age: <input type="text" name="age"><br /><br />
<input type="submit">
</form>
<br />
Hello,
<?php
echo $_GET['getName'];
?>
!
<br>
<?php
if ($_SERVER['REQUEST_METHOD'] == "GET") {
    $age = $_GET['age'];
    if ($age >= 16) {
        echo "You are old enough to volunteer for our program!";
    } else {
        echo "Sorry, try again when you're 16 or older.";
    }
}
?>

I have two forms. Both displaying the exact same thing, but one form using POST and one using GET.

I have gotten so close to finishing this off but now I have another small/weird issue.

The code technically works correctly, but here's the output explanation:

when I first open up the page the GET form already has the result "Sorry, try again when you're 16 or older." When I fill out the first 'simple' form, it displays the result correctly but then the POST form shows the "Sorry, try again..." result. Then, when I fill in the information and click submit, it displays the correct result and the other two forms are blank as they're supposed to be, and then the same result when I fill out the GET form.

Any help on this is much appreciated.

Try this code :

   <h2> Simple Form </h2>

   <form action="" method="post">
      First Name: <input type="text" name="firstName">
    Last Name: <input type="text" name="lastName"><br /><br />
     <input type="submit">
 </form>
 <br />

  Welcome, 

  <?php
     if (isset($_POST['firstName']) && $_POST['lastName'])
    {
   echo $_POST['firstName'];
   echo " ";
   echo $_POST['lastName'];
   }
   ?>

   ! 
    <hr>


 <h2>POST Form</h2>

 <h3>Would you like to volunteer for our program?</h3>

  <form action="" method="post">
  Name: <input type="text" name="postName">
  Age: <input type="text" name="age"><br /><br />
    <input type="submit">
  </form>
  <br />


  Hello, 

  <?php
  if (isset($_POST['postName']))
  {
   echo $_POST['postName'];
   }
  ?>

    !
   <br>


  <?php
 if ($_SERVER['REQUEST_METHOD'] == "POST")
 {

 if (isset($_POST['age']))
 {
    $age = $_POST['age'];

    if ($age >= 16)
    {

        echo "You are old enough to volunteer for our program!";
    }
    else
    {
        echo "Sorry, try again when you're 16 or older.";
    }
    }
}
?>

 <hr>

   <h2>GET Form</h2>

   <h3>Would you like to volunteer for our program?</h3>

  <form method="get" action="<?php echo            htmlspecialchars($_SERVER["REQUEST_URI"]);    ?>"> 
<input type="hidden" name="p" value="includes/forms.php">
Name: <input type="text" name="getName">
Age: <input type="text" name="age"><br /><br />
<input type="submit">
</form>
<br />

Hello, 

<?php
if (isset($_GET['getName']))
{
echo $_GET['getName'];
}
?>

!
<br>


<?php
if ($_SERVER['REQUEST_METHOD'] == "GET")
{


if (isset($_GET['age']))
{
    $age = $_GET ['age'];



    if ($age >= 16)
    {

        echo "You are old enough to volunteer for our program!";
    }
    else
    {
        echo "Sorry, try again when you're 16 or older.";
    }
}
}
?>

Please try this. I hope it will help.

Replace

if ($_SERVER['REQUEST_METHOD'] == "POST") {

with

if (isset($_POST['age'])) {

Similarly,Replace

if ($_SERVER['REQUEST_METHOD'] == "GET") {

with

if (isset($_GET['age'])) {

When you first enter on page, default REQUEST_METHOD is GET so you should check if isset($_GET['age']) { and here check if it is more than 16 } also you should check this one echo $_GET['getName'];
and change on this
echo isset($_GET['getName']) ? $_GET['name'] : "";
You should also check $_POST request like this and your program will work correctly.