-4

客户端 Javascript 与服务器端 Python

如果我想创建一个注册表单,通过每种方法验证 - 检查 - 输入错误的优缺点是什么。你有什么建议吗?

4

2 回答 2

9

需要服务器端(后端)代码来创建注册系统。毕竟,您需要以某种方式创建用户并存储用户输入的数据,而这无法在客户端上完成。

混合服务器端和客户端的最常见情况是这样的:

  • 使用客户端代码来改善用户体验。这意味着: 初始验证,可能是 AJAX 请求以检查例如所选用户名是否有效且可用。
  • 使用服务器端代码进行最终验证(您不能信任来自客户端的任何内容),并且显然通过创建新用户并将其存储在数据库中来最终执行实际注册。

假设您的绝大多数用户都启用了 JavaScript,并且您也不想为没有启用 JavaScript 的用户提供出色的 UX,您可以通过在客户端中提供详细的错误消息(例如,涉及突出显示错误字段)来简化事情- 端验证逻辑,如果服务器端验证失败,则仅显示一般错误消息。
但是,如果您无法在客户端上正确验证某些事情(即使在他启用 JS 的情况下不太可能,因为您可以使用 AJAX),您应该确保服务器端验证确实显示正确的错误消息,所以用户知道出了什么问题。

如果用户没有提交任何巨大的东西(例如文件上传)并且您有一些干净的方法来重新填写所有表单字段以防提交无效,那么最简单的解决方案将只进行服务器端验证,因为这样可以避免创建验证逻辑两次(假设您没有某种方法可以以服务器端和客户端代码都可以访问的抽象方式指定它)。

另一种可能性 - 特别是在涉及密码字段时是一个好主意(对于良好的用户体验,即使在提交错误之后您也希望保留用户输入的内容,但从安全角度来看,您不应该将用户的密码发回以避免它被缓存某处) - 将使用 AJAX 提交整个表单,例如发送回一个 JSON 有效负载,其中包含在成功的情况下应该重定向用户的 URL,或者在失败的情况下发送错误列表。这尤其具有优势,您可以轻松地编写服务器端代码,在 AJAX 请求的情况下返回 JSON 有效负载,在正常请求的情况下返回完整的 HTML 页面。

于 2012-11-20T07:23:12.273 回答
1

JavaScript
- 优点:
易于测试和实现。在进行表单验证时,JavaScript 可以进行即时验证,并具有许多用于正则表达式检查和 DOM 遍历 (jQuery) 的实用程序。此外,处理被卸载到客户端(尽管这可能可以忽略不计)。
- 缺点:
不支持 JavaScript 的用户

Python
- 优点:
支持没有 JavaScript 的用户。隐藏,因此更安全。
- 缺点:
需要刷新页面才能显示结果。这可能会让一些用户感到沮丧,因为并非所有字段(例如密码字段)都应保存。

我会使用 JavaScript 进行即时反馈,使用 Python 进行最终结果错误检查,并作为没有 JavaScript 的用户的后备。

于 2012-11-20T07:27:03.977 回答