【问题标题】:$_POST is empty after form submit表单提交后 $_POST 为空
【发布时间】:2022-03-24 23:48:12
【问题描述】:

我正在使用 Twitter Bootstrap 构建一个 Web 应用程序。我有一个表单,用户应该在其中输入他的姓名和姓氏,然后单击提交。问题是,$_POST 是空的。 我在 Windows 8 机器上使用 WAMP。

<?php
if(isset($_POST["send"])) {
    print_r($_POST)
} else {
    ?>
    <form class="form-horizontal" action="" method="post">
        <div class="control-group"> <!-- Firstname -->
            <label class="control-label" for="inputEmail">First name</label>
            <div class="controls">
                <input type="text" id="inputName" placeholder="First name">
            </div>
        </div>
        <div class="control-group"> <!-- Lastname -->
            <label class="control-label" for="inputEmail">last name</label>
            <div class="controls">
                <input type="text" id="inputLastname" placeholder="Last name">
            </div>
        </div>
        <div class="form-actions">
            <button type="submit" name="send" class="btn btn-primary">Submit data</button>
            <a href="<?php $mywebpage->goback(); ?>" class="btn">Cancel</a>
        </div>
    </form>
    <?php
}
?>

提前致谢

【问题讨论】:

  • 为输入类型分配名称
  • 该死,太明显了,我没看到。非常感谢!
  • 我已将此作为答案发布。如果你愿意,你可以喜欢它:)
  • 感谢您的提问,一旦我找到这个 SO 线程,这对我来说也是显而易见的。我认为我们都从 Bootstrap 示例开始,并没有注意到名称丢失。

标签: php twitter-bootstrap


【解决方案1】:

为输入类型添加名称,例如

<input type="text" id="inputLastname" name="inputLastname" placeholder="Last name">

现在检查$_POST 变量。

【讨论】:

    【解决方案2】:

    您的输入没有name 属性。设置那些:

    <input type="text" id="inputName" placeholder="First name" name="first_name" />
    <input type="text" id="inputLastname" placeholder="Last name" name="last_name" >
    

    另外,看看你检测表单提交的方式:

    if(isset($_POST['send']))
    

    您检查提交按钮是否存在于发布数据中。这是一个坏主意,因为在 Internet Explorer 的情况下,如果用户按 Enter 键提交表单,则提交按钮将不会出现在发布数据中。

    更好的方法是:

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

    或者

    if(isset($_POST['first_name'], $_POST['last_name']))
    

    更多信息 - Why isset($_POST['submit']) is bad

    【讨论】:

      【解决方案3】:

      问题是您正在检查是否设置了$_POST['send'],但它不会。表单中的“发送”字段是按钮,但该按钮没有值,因此不会包含在$_POST 中。

      希望对您有所帮助。

      【讨论】:

        【解决方案4】:
        <?php
        if(isset($_POST["send"])) {
          echo $_POST["inputName"];
            echo $_POST["inputLastname"];
        } 
        else {
            ?>
            <form class="form-horizontal" action="<? echo $_SERVER['PHP_SELF']; ?>" method="POST">
                <div class="control-group"> <!-- Firstname -->
                    <label class="control-label" for="inputEmail">First name</label>
                    <div class="controls">
                        <input type="text" id="inputName" placeholder="First name" name="inputName"> 
                    </div>
                </div>
                <div class="control-group"> <!-- Lastname -->
                    <label class="control-label" for="inputEmail">last name</label>
                    <div class="controls">
                        <input type="text" id="inputLastname" name="inputLastname" placeholder="Last name">
                    </div>
                </div>
                <div class="form-actions">
                    <input type="submit" name="send" class="btn btn-primary">Submit data</button>
                    <a href="#" class="btn">Cancel</a>
                </div>
            </form>
            <?php
        }
        ?>
        

        【讨论】:

          【解决方案5】:

          我注意到使用 'name' 属性不适用于 Bootstrap Validator for (if(isset($_POST["send"]))) .因此,如果您想在表单上添加验证,那么我建议您按照这种方式进行操作!

          解决方案

          <button type="submit" class="btn btn-primary">Submit data</button>
          

          php

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

          【讨论】:

            【解决方案6】:

            添加动作或使用文件的位置:

            <form class="form-horizontal" action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
            

            【讨论】:

            • 1.可以通过 javascript 添加操作。 2.请不要使用$_SERVER['PHP_SELF']
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-10-25
            • 1970-01-01
            • 2013-06-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-19
            相关资源
            最近更新 更多