PHP:HTML表单在提交后消失

时间:2015-11-09 08:48:36

标签: php html forms post

我的PHP函数中有一个简单的HTML表单,您可以在此处看到:

<?php
     function myFunction()
{
     echo "
        <form method='post'>
            <fieldset>
                <legend>Something</legend>
                <input type='text'>
                <input type='submit' value='send' name='postform'>          
            </fieldset>
        </form>
     ";

        if (isset($_POST['postform']))
        {
            echo "I'm working!";
        }
}
?>

当我调用该函数时,我看到了表单,但是当我通过提交按钮提交它时,它就消失了。 我该如何解决这个问题?

这是完整的代码

<?php
echo "
<form method='post'>
<button name='first'>First step</button>
</form>
</div>
";

if (isset($_POST['first']))
{
myFunction();
}

?>

<?php
function myFunction()
{
echo "
<form method='post'>
<fieldset>
<legend>Something</legend>
<input type='text'>
<input type='submit' value='send' name='postform'>
</fieldset>
</form>
";

if (isset($_POST['postform']))
{
echo "I'm working!";
}
}
?>

7 个答案:

答案 0 :(得分:3)

问题在于,'error'超级全局会在新请求中被清除,就像您在浏览页面时一样,这很自然。

所以,如果一个人来到一个页面,比方说$_POST,然后他提交一个帖子表单(或任何表单)$_POST = ['first' => ''],结果['postform' => 'send']就会{ {1}}。

因此,在您的情况下,最简单的解决方案是关注Shailesh's answer或使用$_POST提交第一个表单,当然,您必须将['postform' => 'send']更改为method='get'

但更好的解决方案是在每个步骤中在请求中传递一些“步骤”参数,因此您将拥有$_POST['first']。然后,根据步骤变量,做一些事情。

同时查看$_GET['first']

干杯!

答案 1 :(得分:2)

它消失了,因为你无法调用函数myFunction()本身。第二种形式不包括“第一”字段。

如果您希望它“按原样”工作,请将其包含在myFunction()代码中:

    function myFunction()
    {
    echo "
    <form method='post'>
    <fieldset>
    <legend>Something</legend>
    <input type='text'>
    <input type='hidden' value='send' name='first'>
    <input type='submit' value='send' name='postform'>
    </fieldset>
    </form>
   ";
   if (isset($_POST['postform']))
   {
    echo "I'm working!";
   }
   }
   ?>

唯一的变化是

    <input type='hidden' value='send' name='first'>

使表单再次可见。无论如何,你应该重新考虑整个代码。

答案 2 :(得分:1)

if (isset($_POST['first']))
{
   myFunction();
}

替换为:

if (isset($_POST['first']) || isset($_POST['postform']) )
{
   myFunction();
}

答案 3 :(得分:1)

postform 表单处理移出 myFunction 函数定义,并从那里调用 myFunction 函数。这是完整的代码,

<html>
<head>
    <title>Page Title</title>
</head>
<body>
<?php
    echo "
        <form method='post'>
            <button name='first'>First step</button>
        </form>
    ";

    if (isset($_POST['first'])){
        myFunction();
    }

?>

<?php
    function myFunction(){
        echo "
            <form method='post'>
                <fieldset>
                    <legend>Something</legend>
                    <input type='text'>
                    <input type='submit' value='send' name='postform'>
                </fieldset>
            </form>
        ";
    }

    if (isset($_POST['postform'])){
        myFunction();
        echo "I'm working!";
    }
?>
</body>
</html> 

答案 4 :(得分:0)

写两个不同的文件。

<html>
 <body>
 <form method="post" action="submit.php">
 <fieldset>
   <legend>Something</legend>
   <input type="text" name="input">
   <input type='submit' value='send' name="postform">
   </fieldset>
   </form>

现在在submit.php中写下以下内容

 <?php 
  $input=$_POST['input'];
    if ($input!="")
     {
    echo "I'm working!";
      }

 ?>

答案 5 :(得分:0)

<?php
if(isset($_POST['submit'])) 
{ 
    $name = $_POST['name'];
    echo "User Has submitted the form and entered this name : <b> $name </b>";
    echo "<br>You can use the following form again to enter a new name."; 
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
   <input type="text" name="name"><br>
   <input type="submit" name="submit" value="Submit Form"><br>
</form>

答案 6 :(得分:0)

在此代码中更改此位置:

{{1}}