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

时间:2017-02-06 06:14:13

标签: php forms post get

这是我的代码:

<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.";
    }
}
?>

我有两种形式。两者都显示完全相同的东西,但一个使用POST,一个使用GET。

我已经接近完成了这个,但现在我有另一个小/奇怪的问题。

代码在技术上正常工作,但这是输出说明:

当我第一次打开页面时,GET表单已经显示结果“抱歉,16岁或以上时再试一次。”当我填写第一个“简单”表单时,它会正确显示结果,然后POST表单显示“抱歉,再试一次......”结果。然后,当我填写信息并单击“提交”时,它会显示正确的结果,而其他两个表格应该是空白的,然后填写GET表单时会得到相同的结果。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

请试试这个。我希望它会有所帮助。

替换

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

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

同样,替换

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

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

答案 1 :(得分:0)

首次进入页面时,默认REQUEST_METHOD为GET,因此您应该检查isset($_GET['age']) { and here check if it is more than 16 }是否 你也应该检查一下 echo $_GET['getName'];
并改变这一点 echo isset($_GET['getName']) ? $_GET['name'] : "";
您还应该检查这样的$ _POST请求,您的程序将正常工作。

答案 2 :(得分:0)

试试这段代码:

   <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.";
    }
}
}
?>