1

这是一个相当开放的问题,但是我想知道在注册表格中验证用户输入的推荐方法是什么,并向用户传达在尝试再次提交之前需要更改哪些信息(如果有的话)。现在,我的表单设置了一些 HTML 属性,例如 maxlength,但这显然不可靠。所以在 PHP 代码中,我让它过滤掉超过长度的字符串,清理输入等等。

但是,如果给定的输入无效,我让 PHP 代码将用户重定向回注册页面,该页面正常显示,没有用户先前的输入,也没有任何需要更改的指示。

这显然是不可接受的,所以我需要知道我是否应该使用 JavaScript 作为验证和显示指标的中介手段,或者我是否应该使用会话变量来中继先前的输入,并指示要显示哪些字段的错误。或者,完全是别的东西。

希望我的问题很清楚,非常感谢所有帮助!

编辑:禁用 JavaScript 的用户是否应该考虑此类事情的现实问题?

4

1 回答 1

2

你的答案很简单:

两者

首先,在客户端进行初始验证。这与进行用户检查/身份验证/权限级别无关(至少现在还没有)。如果您使用 AJAX 调用来检查是否有人试图使用已注册的电子邮件地址或那种“安全”的电子邮件地址创建帐户,则可能会有例外情况(清理... ...一切)查看。

它是关于:“这个字段是否通过了白痴检查”。

这就是 JS-validation 应该做的。如果失败,请在该字段上设置 css 类,让人们从视觉上知道有什么事情发生了。查看 css:before:after伪选择器,它们可以让你做一些事情,比如在你设计的东西之前/之后添加文本或图像(input在这种情况下)

input.valid:before { content : url("checkmark.png") }
input.invalid:after { content : url("big-red-x.png") }

您可以动态添加工具提示或消息横幅,以提供有关错误的用户友好信息。

所有这些东西都可以由知道如何提交 POST 请求的人解决,使用许多对开发人员友好的 Web 解决方案之一(或者只是非常无聊的人,他们将使用自己服务器上的脚本来完成,如果你的网站是开放的)。

这就是为什么您仍然需要使用 PHP 进行验证。

这也是您清理一切(或使用 PDO 作为数据库访问层,并使用他们预先清理的解决方案)的时候。然后你就可以开始在你的数据库中寻找权威之类的东西了。

如果在 PHP 方面出现错误,请将它们转储到它们已经存在的页面上,并已填充它们的旧值。

从那里,要么触发 JS 验证错误,并带有一些服务器端消息... ...并再次运行 JS 验证,以获取字段中的错误 ...而且(对于非 JS 人员,尽管您可以在页面加载时隐藏/删除它)在某处包含一个静态横幅,用于保存您在 PHP 中遇到的错误列表。

这可以深入到你想要的深度,你可以将所有这些设置为通过一系列 AJAX 调用运行,PHP 错误在错误数组中返回,返回到页面,进行解析和应用到不适当的领域,或在某处放置中央横幅......

就像你说的,这是一个非常开放的问题。

因此,就客户而言,您的高层次目标是: 1. 在出现错误时提供响应式(/即时)用户友好的反馈 2. 使反馈简洁、明确和可操作 3. 尽可能多地做不会让我重写所有内容,或在页面之间来回导航——最终,梦想是在填写表单和进入我试图访问的内容之间进行 0 页面更改。

于 2012-09-16T06:57:43.310 回答