基本上,我希望在编写注册页面时,当用户重定向回同一页面时,会(同时(返回错误(如无效用户名、短密码、过长用户名、无效电子邮件等(。
我经常看到很多网站都有这个:
您提交的数据中有X个错误:
- 用户名太短
- 密码太短
- 等等。等等
当用户提交表单并被重定向回时,会返回这些错误。
我想通过$_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代码显示它们,我已经取得了很好的结果。