1

既製のショッピングカートは使用していません。自分でプログラミングしています。99%の確率で問題なく動作しますが、約2か月に1回、注文は$0で行われます。理由がわかりません。同じ製品とすべて同じ情報を使用してテスト購入を行ったのですが、$0にすることができません。これをうまく撮影する方法がわかりません。誤った価格を尊重しないという免責事項があります。ただし、クライアントはこれが発生しないようにしたいと考えています。私はこれらすべてを行うためにPHPを使用しています。自分でその出来事を再現することはできないように思われるので、問題の根底に到達するのは難しいと感じています。誰かがこれをトラブルシューティングする方法についてアドバイスを提供できますか?

ありがとう!!

4

6 に答える 6

3

最終的には、なぜこれが起こっているのかを理解したいと思うでしょう。あなたのコードを見ずに、私はそれであなたを本当に助けることができません。ただし、短期的には、チェックアウトプロセスの最後に健全性チェックを追加してみませんか?

if ( $final_price < 1 ) {
    do_epic_fail(); // Show an error, whatever.
}
于 2009-03-20T13:44:01.230 に答える
3

まず、広範な注文ログを使用します。すべてのクリック、すべての入力、すべてのSQLクエリ。次に、それが再び発生したときに、その順序のログを調べて、何が起こったかを確認します。

頭に浮かぶ可能性がいくつかあります。1つは、アイテムの合計を取得するためのクエリに一時的なエラーがあります。クエリが失敗した場合、デフォルトで0.00に設定されている可能性があります。たとえば、数量に-1を入力したり、「ABC」などのテキストを入力したりするとどうなりますか

または、ユーザーがフィールドの1つに何か間違ったことを入力すると、価格にゼロ値が読み込まれるというSQLインジェクションの問題が発生する可能性があります。

それが何であれ、適切なロギングで明らかになります。

于 2009-03-20T13:47:22.047 に答える
1

サイトへのURLはありますか?

それ以外の場合は、ユーザーから渡されたデータが、ユーザーがオーバーライドできる価格(たとえば、非表示フィールドやパラメーター)を決定することを許可している場所であると推測できます。

製品のIDをサーバー側のコードに渡していることを確認し、サーバーの価格*注文数量を掛けます。(例えば、ユーザー入力を決して信用しない)

于 2009-03-20T13:43:32.417 に答える
1

コードは$_SESSIONデータに依存していますか?ユーザーが非常に長い時間待機した場合、必要なデータの一部が期限切れになる可能性がありますが、チェックアウトは続行される可能性があります。

他の人が言っているように、ソースコードなしでさらにコメントすることは困難です。

于 2009-03-20T13:51:22.443 に答える
0

クライアント側から支払いゲートウェイに金額の詳細を投稿していますか(非表示のフォームフィールド)?その場合は、Web開発者などのブラウザツールバーを使用して簡単に上書きできます。

常にサーバー側から支払いの詳細を投稿してください。

于 2009-03-20T13:46:59.023 に答える
0

最終価格が 0 の場合は、注文をもう一度チェックして、実際に商品が含まれているかどうかを確認してください。無料のアイテムや特別なプロモーションが行われている場合は、注文がゼロになる可能性があるので、おそらくこれが道です.

これは、ソースを見ずに答えるのが難しい質問です。

于 2009-03-20T13:57:11.823 に答える