3

我想知道在客户端使用 JavaScript 和在服务器端使用 PHP 实现合法支付系统是一个坏主意吗?我主要担心 IEEE 浮点和过于松散的语言。

4

3 回答 3

7

主要问题是 Javascript,它甚至没有真正的整数类型,更不用说(官方)适当的十进制库(PHP 有BC Math)。您可以在客户端使用Java 的 BigDecimal 到 Javascript的旧第三方端口。或者,以美分计算所有内容,因为 IEEE double 可以准确地表示长达 53 位的整数,这足以让整个美国主权债务至少再持有 10 年(可能)。

于 2010-11-27T19:17:25.497 回答
3

我会说这取决于你如何实现它。Javascript 在客户端运行,因此不安全。它不能被信任。此外,这意味着您的系统不适用于关闭 Javascript 或使用旧版浏览器的人。

只要您牢记这一点,使用 PhP 来处理安全的东西并检查来自 Javascript 的所有内容并愿意失去那些没有 Javascript 的人,那么我认为它没有问题。

但是做这一切可能比你想象的要难,所以要小心。

于 2010-11-27T19:16:09.730 回答
1

正如其他人所指出的,真正的问题是您不能信任客户。曾经。不应在客户端进行任何计算,或使用来自客户端的数据(例如价格)。除此之外,我永远不会使用浮点数来表示货币金额。货币应始终表示为整数,其中 1 代表基本货币单位的单个单位(例如美分)。它会使事情稍微复杂化,但请帮自己一个忙,并创建一些简单的访问器功能,您的生活会更轻松。

于 2010-11-27T20:09:06.317 回答