Php $\提交表单后,POST为空

Php $\提交表单后,POST为空,php,html,forms,post,Php,Html,Forms,Post,我在服务器上设置了此测试页。请告诉我为什么即使在我提交表单时,$\u POST数组也不包含任何内容。我已经在三种不同的浏览器中尝试过了,但什么都没有发生 <?php print_r($_POST);?> <form method="post"> <p><label>Email: </label> <input type="text" id="login_email" /> </p> <p><

我在服务器上设置了此测试页。请告诉我为什么即使在我提交表单时,
$\u POST
数组也不包含任何内容。我已经在三种不同的浏览器中尝试过了,但什么都没有发生

<?php print_r($_POST);?>

<form method="post">

<p><label>Email: </label>
<input type="text" id="login_email" />
</p>

<p><label>Password: </label>
<input type="password" id="login_password" />
</p>

<p><label>Remember Me?: </label>
<input type="checkbox" id="login_remember" />
</p>

<p>
<input type="submit" value="Login" />
</p>

</form>

电邮:

密码:

还记得我吗


我已经编写PHP多年了,这在以前从未发生过。这段代码怎么了?

嗯,您没有表单标记的操作吗?它应该是脚本名称:

<form method="post" action="scriptname.php">


…而且您也没有为每个表单输入设置名称-浏览器不会将ID作为元素名称提交。

您的输入元素没有名称属性。应该是:

<input type="text" id="login_email" name="login_email" />


如果输入元素没有name属性,则不会将其作为POST数据的一部分发送。

输入元素没有name属性。

您的所有输入元素都需要name属性。

我建议您基于Zend_View helpers编写类似以下函数的内容

<form method="POST" action="<?php echo $PHP_SELF; ?>

<p><label>Email: </label>
<input type="text" name="login_email" />
</p>

<p><label>Password: </label>
<input type="password" name="login_password" />
</p>

<p><label>Remember Me?: </label>
<input type="checkbox" name="login_remember" />
</p>

<p>
<input type="submit" value="Login" />
</p>

</form>
formText($name, $value = null, array $attribs = null)
formPassword($name, $value = null, array $attribs = null)
formLabel($id, $text, array $attribs = null)
formHidden($name, $value = null, array $attribs = null)
formSubmit($name = null, $text = null, array $attribs = null)
formSelect($name, $selected, array $attribs = null, array $options = null)
formCheckbox($name, $default, array $attribs = null, array $options = null)
这样你就再也不会忘记/错过这样的事情了

<form method="POST" action="<?php echo $PHP_SELF; ?>

<p>
<?php
echo formLabel('login_email', 'Email'), ':',
     formText('login_email'); 
?>
</p>

<p>
<?php
echo formLabel('login_password', 'Password'), ':',
     formPassword('login_password'); 
?>
</p>

<p>
<?php
echo formCheckbox('login_remember'), ' ', 
     formLabel('login_remember', 'Remember me');
?>
</p>

<p>
<?php
echo formSubmit(null, 'Login');
?>
</p>
</form>

您忘记了使脚本工作的名称属性。您还可以在标签中包含“for”标记,以匹配输入的名称属性。这不是要求,但有助于表单的CSS格式化:

<p>
<label for="login_email">Email: </label>
<input type="text" name="login_email" id="login_email" />
</p>

电邮:

如果您必须在6个月后返回,可以帮助匹配的所有内容,并使您的代码更加精简和可读。action属性如果您不打算填充一个,我会将此作为您的操作:

<form method="POST" action="<?php echo $PHP_SELF; ?>

实际上,我认为省略动作名称是有效的。如果您这样做,浏览器只会发布/访问当前页面。大多数浏览器确实表现出这种行为,但根据官方规范,操作属性是必需的-。感谢您的澄清。我同意,当规范没有定义默认行为时,表达这种模糊性是一个坏主意。。。您忘记了“名称”和操作部分。有时(即使在
name
fixes之后),检查是否也没有PHP重定向。