ここで疑問に思うのは、クライアント側で JavaScript を使用し、サーバー側で PHP を使用して合法的な支払いシステムを実装するのは悪い考えですか? 私は主に IEEE 浮動小数点と過度にルーズな言語について心配しています。
3 に答える
主な問題は、(公式の) 適切な 10 進数ライブラリは言うまでもなく、実際の整数型さえも持たない Javascript です (PHP にはBC Mathがあります)。クライアント側で使用できるJava の BigDecimal から Javascript への古いサードパーティ ポートがあります。別の方法として、IEEE double は 53 ビット長までの整数を正確に表すことができるため、すべてをセントで計算します。
それはあなたがそれをどのように実装するかに依存すると思います。Javascript はクライアント側で実行されるため、安全ではありません。信頼できません。また、Javascript をオフにしているか、古いブラウザを使用している場合、システムが機能しないことを意味します。
それを念頭に置いている限り、PhP を使用して安全なものを処理し、Javascript に由来するすべてのものをチェックし、Javascript を持っていない人を失うことを厭わない限り、問題はないと思います。
しかし、それをすべて行うのは想像以上に難しいので、注意してください。
他の人が指摘しているように、本当の問題は、クライアントを信頼できないことです。これまで。クライアント側で、またはクライアントからのデータ (価格など) を使用して計算を行うべきではありません。それを超えて、金額を表すためにフロートを使用することは決してありません。通貨は常に、1 が通貨の基本単位 (セントなど) の単一単位を表す整数として表す必要があります。少し複雑になりますが、簡単なアクセサ関数をいくつか作成してください。