我在我的服务器上设置了这个测试页面。请告诉我为什么即使我提交表单,$_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,这从未发生过。这段代码有什么问题?
答案 0 :(得分:52)
您的输入元素没有名称属性。应该是:
<input type="text" id="login_email" name="login_email" />
如果input元素没有name属性,则不会将其作为POST数据的一部分发送。
答案 1 :(得分:9)
嗯,你没有表格标签的动作?它应该是脚本名称:
<form method="post" action="scriptname.php">
...而且您也没有为每个表单输入设置名称 - 浏览器不会将ID作为元素名称提交。
答案 2 :(得分:4)
<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>
答案 3 :(得分:2)
输入元素没有name属性。
答案 4 :(得分:1)
我建议您根据Zend_View帮助程序编写类似以下函数的内容。
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>
提示:
答案 5 :(得分:0)
您的所有输入元素都需要名称属性。
答案 6 :(得分:0)
您忘记了使脚本正常工作的名称属性。您还可以在标签中包含“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; ?>
这将确保您的页面在表单的要求方面是好的,并且确保您的脚本应该执行。看起来像一个简单的超视距。希望这会有所帮助。