验证只接受浮点数,但它也接受整数,在PHP?

时间:2015-05-04 07:48:51

标签: php forms validation

在表单中,用户需要输入两个值。这些值应该只浮动数字。我已经搜索了如何validate to input float values,以及我这样做的方式,它接受整数。我将filter_var()函数与FILTER_VALIDATE_FLOAT一起使用。它成功接受浮点数,但它也接受我不想要的整数。

savelibscores.php

<?php

 define('DB_NAME','');
 define('DB_USER','');
 define('DB_PASSWORD','');
 define('DB_HOST','localhost');

 $connect = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);

 if(!$connect){
    die('Could not connect:'.mysql_error());
 }

 $db_selected=mysql_select_db(DB_NAME,$connect);

 if(!$db_selected){
    die('Can\'t use'.DB_NAME.':'.mysql_error());
 }

if(isset($_POST['submit'])){

$value1=$_POST['s3'];
$value2=$_POST['s4'];
$value3=$_POST['year'];


if(filter_var($value1,FILTER_VALIDATE_FLOAT) && filter_var($value2,FILTER_VALIDATE_FLOAT)) {
    echo 'TRUE.';

} else {
    echo 'FALSE.';
}

if(!empty($value1) && !empty($value2) && !empty($value3)){
    $sql=mysql_query("INSERT INTO `library`(s3,s4,year) VALUES ('".$value1."','".$value2."','".$value3."')")or die(mysql_error());
}
else{
    echo "Please fill all the fields. Please be sure to use float values also.";
}


}
?>

3 个答案:

答案 0 :(得分:0)

浮点数是整数的超集,并且作为浮点输入,“3”和“3.14159”一样有效,即使3也恰好也是有效整数。

你宁愿强迫人们输入“3.0”而不是“3”吗?生成的浮点值将完全相同,并且只会使您的用户不太方便。

答案 1 :(得分:0)

验证仅接受浮点数

<强>更新

$value1 = "23.5";

if (is_numeric($value1))
{   
    if (strpos($value1, ".") !== false)
    {
        echo 'TRUE';  //float
    } else {
        echo 'FALSE';  //integer
    }
}

答案 2 :(得分:-1)

is_float($number)会告诉您$ number是否为浮点数。 (23返回false)。

如果您不想接受23.0这样的数字,那么:

function isDecimal($number)
{
  if(is_numeric($number) and floor($number)!==$number)
    return true;

  return false;
}