我想知道在客户端使用JavaScript和服务器端使用PHP实现合法的支付系统是个坏主意吗?我主要担心的是IEEE浮点数和过于松散的语言。
答案 0 :(得分:6)
主要问题是Javascript,它甚至没有真正的整数类型,更不用说(官方)正确的十进制库(PHP有BC Math)。您可以在客户端使用old third-party port of Java's BigDecimal to Javascript。或者,以美分计算所有内容,因为IEEE双精度可以准确地表示长度最多为53位的整数,这足以使整个美国主权债务至少持续10年(可能)。
答案 1 :(得分:3)
我会说这取决于你如何实现它。 Javascript在客户端运行,因此不安全。它不可信任。此外,这意味着您的系统不适用于关闭Javascript或使用旧版浏览器的用户。
只要记住这一点,使用PhP来处理安全的东西并检查来自Javascript的所有内容并且愿意失去那些没有Javascript的人,那么我没有看到它的问题
但是做所有这些比你想象的更难,所以要小心。
答案 2 :(得分:1)
正如其他人所指出的那样,真正的问题是你无法信任客户。永远。不应在客户端进行任何计算,也不应使用来自客户端的数据(如价格)。除此之外,我永远不会使用浮动代表货币金额。货币应始终表示为整数,其中1表示基本货币单位的单个单位(例如美分)。它使问题稍微复杂化,但帮自己一个忙,并创建一些简单的访问功能,你的生活将更容易。