1

我正在开发一个使用 PHP 作为服务器端的 ERP 系统。所以我需要非常小心我的网站/系统的安全性。我还将使用 JavaScript 进行客户端验证。所以我想确保客户端打开了 JavaScript,当然我也会验证数据服务器端,但我不想要不必要的服务器调用,主要是我关心表单......以及客户端填写的数据并提交..那么我应该用什么来提交我的数据?

默认 HTML 在此处使用 JavaScript 提交和验证(注意:如果客户端关闭了 JavaScript,则无用)

<input type="submit" name="Add Data" />


或者在 JavaScript 的帮助下使用锚标记提交<a>(我发现这很有意义,好像 JavaScript 被关闭了他将无法提交数据)

<a href="#" onclick="document.getElementById("form_id").submit();">Submit</a>

那么,如果我使用<a>标签提交数据,或者我应该坚持使用默认submit按钮,会有什么不好的地方吗?如果我<a>用于提交表单数据,我将能够使用 JavaScript 验证数据吗?

4

3 回答 3

4

所以我想确保客户端打开了 JavaScript

你不能。即使您将系统设计为在没有 JavaScript 的情况下崩溃,也有人可以对其进行逆向工程并手动提交不良数据。

当然我也会验证数据服务器端

这就是解决方案

但我不想要不必要的服务器调用

如果你从关闭 JavaScript 的人那里得到足够多的意外提交,其中包含错误,以提供显着的性能或负载问题,我会吃掉我的帽子。

默认 HTML 在此处使用 JavaScript 提交和验证

是的。将 JavaScript 绑定到submit表单上的事件。

<a href="#"

不要那样做。

<a>那么如果我使用标签提交数据有什么不好的地方吗

  • 它看起来不像会提交表单的东西
  • 它不会在屏幕阅读器的表单模式中显示
  • 如果 JavaScript 因任何原因不起作用,它会静默失败

我应该坚持使用默认提交按钮吗?

是的!

于 2012-10-17T16:18:47.250 回答
2

尽可能使用浏览器默认设置。坚持使用提交按钮,并将您的验证绑定到submit表单上的事件。这样,无论是否使用 JavaScript,您的表单都可以按预期工作。

于 2012-10-17T16:17:31.237 回答
0

不,您永远无法将客户端操作视为可靠或安全的。如果我有意这样做,我可以阻止验证,但让 JavaScript 为提交工作。

至于您的问题,这很简单:您是否希望用户能够在没有 JavaScript 的情况下提交。这不是关于什么是“更好”的问题,而是您的要求的问题。

于 2012-10-17T16:17:58.950 回答