【发布时间】:2013-07-10 03:18:38
【问题描述】:
正如标题所说,我正在构建一个注册页面,我正在遵循一个教程并构建代码,并且由于某种原因而不是打印错误,它只是在 url 中发布,这是我的代码。
<?php include ("core/init.php"); ?>
<?php include ("includes/overall/header.php");
if (empty($_POST) === false) {
$required_fields = array('username', 'password', 'password_again', 'email');
foreach($_POST as $key=>$value) {
if (empty($value) && in_array($key, $required_fields) === true) {
$errors[] = 'Fields marked with an * are required';
break 1;
}
}
}
print_r($errors);
?>
<h1>Register</h1>
<form action="" method"post">
<ul>
<li>
Username*:<br>
<input type="text" name="username">
</li>
<li>
Password*:<br>
<input type="password" name="password">
</li>
<li>
Password Again*:<br>
<input type="password" name="password_again">
</li>
<li>
E-mail*:<br>
<input type="text" name="email">
</li>
<li>
<input type="submit" value="Register">
</li>
</ul>
</form>
<?php include ("includes/overall/footer.php") ; ?>
【问题讨论】:
-
尝试将
$errors[] = 'Fields marked with an * are required';更改为$errors = 'Fields marked with an * are required';-- PS:“=== true”是不必要的。只是让你的代码有点混乱。这可以完成工作并且感觉更清晰。if(empty($value) && in_array($key, $required_fields))-- PPS:我知道你可能只是在学习,但以防万一:避免<br>喜欢害虫;在这里,使用<label>并使用 CSS 将其设置为display: block;。 -
感谢您的提示,是的,我正在通过教程学习,很高兴听到任何人愿意分享的任何建议。
-
哦,我在这里。
break后面的“1”没用。一个数字参数用于说明您想要退出多少个嵌套循环。但是在这里,就像在 99.9% 的情况下一样,它是一个。并且不需要指定一个。所以break;很好,甚至更好。 - 既然你要求它,你的 块被奇怪地打开了。如果您将include()与其他代码块放在一个单独的块中,那很好,但将它与另一个块放在一起,而不是单独放在另一个块中,然后将另一个与其余代码放在一起。哦,是的,如果一个标签(比如, -
我知道这离题了,但是很快,有什么理由将
-
只是为了便于阅读。这或多或少是您将块的第一行放在开头卷曲(
{)之后的行而不是同一行的原因,或者您将第一个元素放入的原因大在下一行,而不是在同一行。
标签: php mysql forms error-handling