操纵交易价值美元&一分钱

时间:2017-08-02 23:41:16

标签: php

<input name="dollar"...
<input name="cent"...

<?PHP

if ( !is_numeric($_POST['dollar'])) { return; }
if ( !is_numeric($_POST['cent'])) { return; }

$total = $_POST['dollar'].".".$_POST['cent'];

我有一个交易页面,价值包含美元和&amp;分

我所做的是先检查号码并合并美元和分在一起。

它工作正常,但昨晚我注意到一些交易价值不正确

离。

用户输入203.06

但我的日志显示为2030.6

可能是黑客操纵美元和美元。分如2030.6以上

2 个答案:

答案 0 :(得分:0)

允许用户输入限制值+使用money_format功能正确打印结果。

<input name="dollar"...
<input name="cent"...

<?php
  //Dollar is an integer above zero
  $dollar = max(0, intval($_POST['dollar'])); 

  //Cent is an integer between 0 and 99
  $cent = min(99, max(0, intval($_POST['cent']))); 

  //Version to place into logs
  $total = $dollar.".".$cent;

  // Added from another answer to keep everything together

  //Set the local to parse monetary values correctly
  setlocale(LC_MONETARY,"en_US");

  //Get correct monetary value with 2 decimal place and **$** sign
  //Version to print
  $total = money_format("%.2n", $total);

答案 1 :(得分:0)

您可以使用名为 money_format()的功能。在这种情况下,解决方案将是:

main

甚至更好:

$total = money_format($_POST['dollar'].".".$_POST['cent']);

希望有所帮助。 祝你好运!