如何在注册页面上返回错误列表


How do I return a list of errors on a registration page?

基本上,我希望在编写注册页面时,当用户重定向回同一页面时,会(同时(返回错误(如无效用户名、短密码、过长用户名、无效电子邮件等(。

我经常看到很多网站都有这个:

您提交的数据中有X个错误:

  1. 用户名太短
  2. 密码太短
  3. 等等。等等

当用户提交表单并被重定向回时,会返回这些错误。

我想通过$_GET中的数字返回错误,但我想避免这种情况。我也希望避免使用JS/AAJAX和$_SESSION

通常使用$_SESSION来完成,由于某些无法解释的原因,您不想使用它。它们通常被称为闪存会话,因为一旦信息被显示给用户,会话的这一部分就会被破坏。

可以使用cookie并自己管理,但我会坚持使用会话。请务必记住,cookie很容易被最终用户篡改。

让页面将表单提交给自己,就不必返回任何内容。您只需要让代码处理用户第一次访问页面的情况和提交数据的情况。

使用库:

if ($_POST)
{
    $form_helper = new FormHelper();
    $form_helper->validate($_POST["username"], "username");
    $form_helper->validate($_POST["password"], "password");
    if (! $form_helper->notifications())
    {
        // Process form.
    }
}
// Show errors if necessary when rendering the form.

没有库:

$errors = array();
if ($_POST)
{
    // Validate username by hand (let's pretend it passes).
    // Validate password by hand (let's pretend it fails).
    array_push($errors, "The username or password is incorrect.");
    if (! $errors)
    {
        // Process form.
    }
}
// Show errors if necessary when rendering the form.

这里没有太多选项。

我会在$_SESSION中通过它。

我不知道这是否是一种好的做法(甚至在php中也是可能的(,但通过在表中返回错误消息,然后让一些JavaScript代码显示它们,我已经取得了很好的结果。