你的答案很简单:
两者。
首先,在客户端进行初始验证。这与进行用户检查/身份验证/权限级别无关(至少现在还没有)。如果您使用 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 页面更改。