表单提交后,$_POST为空。

9

我正在使用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
}
?>

3
为输入类型指定名称。 - Sid
糟糕,这么明显的问题我居然没看出来。非常感谢! - pangi
我已将此作为答案发布。如果您愿意,可以点赞 :) - Sid
谢谢您的提问,一旦我找到了这个SO线程,它对我来说也很明显。我认为我们两个都是从Bootstrap示例开始的,没有注意到名称缺失。 - Gregory
6个回答

28

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

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

现在检查$_POST变量。

9

您的输入框缺少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中,如果用户按回车键提交表单,则提交按钮将不会出现在帖子数据中。

更好的方法是:

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

或者

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

更多信息 - 为什么使用isset($ _POST ['submit'])是不好的


0

我注意到使用'name'属性与Bootstrap Validator在(if(isset($_POST["send"])))方面不兼容。因此,如果你想在表单上添加验证,我建议你按照以下方式操作!

解决办法

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

PHP

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

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

希望有所帮助。


0
<?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
}
?>

-2

在操作中添加文件的位置或使用:

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

1
  1. 可以通过JavaScript添加该操作。
  2. 请不要建议使用 $_SERVER['PHP_SELF']
- itachi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接