【问题标题】:Required Fields error check not working必填字段错误检查不起作用
【发布时间】: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) &amp;&amp; in_array($key, $required_fields)) -- PPS:我知道你可能只是在学习,但以防万一:避免 &lt;br&gt; 喜欢害虫;在这里,使用 &lt;label&gt; 并使用 CSS 将其设置为 display: block;
  • 感谢您的提示,是的,我正在通过教程学习,很高兴听到任何人愿意分享的任何建议。
  • 哦,我在这里。 break 后面的“1”没用。一个数字参数用于说明您想要退出多少个嵌套循环。但是在这里,就像在 99.9% 的情况下一样,它是一个。并且不需要指定一个。所以break; 很好,甚至更好。 - 既然你要求它,你的 块被奇怪地打开了。如果您将include() 与其他代码块放在一个单独的块中,那很好,但将它与另一个块放在一起,而不是单独放在另一个块中,然后将另一个与其余代码放在一起。哦,是的,如果一个标签(比如,
  • 我知道这离题了,但是很快,有什么理由将
  • 只是为了便于阅读。这或多或少是您将块的第一行放在开头卷曲({)之后的行而不是同一行的原因,或者您将第一个元素放入的原因大
    在下一行,而不是在同一行。

标签: php mysql forms error-handling


【解决方案1】:
<form action="" method"post">

应该是

<form action="" method="post">

您的表单默认为GET,因为它没有正确表示方法,因此 $_POST 为空,因此您的 foreach 没有任何要检查的内容。

【讨论】:

  • 啊,废话,我一遍又一遍地检查顶部的代码,错过了一些愚蠢的东西,谢谢你的回复。
  • @user2542256 如果它能让你感觉好点,我盯着它看了大约 5 分钟才看到它。
  • 我想我是像往常一样依靠 Dreamweaver 自动输入 =“”,出于某种原因,它决定不这样做,永远不要忽略我猜想的显而易见的事情,再次感谢。
  • 您以后应该尝试在没有 Dreamweaver 的情况下进行编码。这是更好的做法,老实说,如果您不小心,有时 Dreamweaver 会为您孵化出一些非常糟糕的代码。在我看来,像 Notepad++ 这样带有语法高亮功能的优秀旧文本编辑器会更有指导意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
  • 2011-05-03
相关资源
最近更新 更多