1

我是这类东西的初学者,所以如果这是一个非常愚蠢的问题,请原谅我,但我在修改我的代码时遇到了麻烦,我只需要一些指导。

无论如何,我需要制作一个允许用户输入 3 个不同值的表单。第一个输入需要是 1-99 的整数。第二个输入需要是 0.0-10.0 的实数。最后一个输入只需要是任何类型的字符串输入(输入实际上可以是任何东西,它不能留空)。

到目前为止,这是我所拥有的:

<?php

if 
(is_numeric($_POST['number1'])&& 

is_numeric($_POST['number2']))

{
    $number1 = $_POST['number1'];
    $number2 = $_POST['number2'];
    $string1 = $_POST['string1'];   
    echo "<p>Int Number =
        $number1</p>\n";
    echo "<p>Real Number = 
        $number2</p>\n";
    echo "<p>String = 
        $string1</p>\n";

    } 
else {
echo 'Error. Integer Number must be an integer (1-99), Real Number must 
        be a real number (0.0-10.0), and String cannot be left blank. 
    Please go back and fill out the form again.';
}       

?>

因此,对于这段代码,我显然没有设置规则(即第一个数字必须是 1-99 的整数,等等)

我知道我需要为要实施的规则添加一个 if-else 语句,但我无法找出正确的方法。

任何建议/帮助都非常感谢。

谢谢!

4

2 回答 2

1

第一个输入需要是 1-99 的整数:

if (is_numeric($_POST['number1']))
...
$number1 = +$_POST['number1'];
if (is_int($number1) && $number1 >= 1 && $number1 <= 99)

第二个输入需要是 0.0-10.0 的实数:

if (is_numeric($_POST['number2']) && strlen(substr(strrchr($_POST['number2'], "."), 1)) === 1)
...
$number2 = +$_POST['number2'];
if ($number2 >= 0 && $number2 <= 10)

最后一个输入只需要是任何类型的字符串输入(输入实际上可以是任何东西,它不能留空):

$string1 = $_POST['string1'];
if (strlen($string1) > 0)

结合在一起,条件将是:

$error = true;

if (is_numeric($_POST['number1'])
    && is_numeric($_POST['number2'])
    && strlen(substr(strrchr($_POST['number2'], "."), 1)) === 1) {

    $number1 = +$_POST['number1'];
    $number2 = +$_POST['number2'];
    $string1 = $_POST['string1'];

    if (is_int($number1) 
        && $number1 >= 1 
        && $number1 <= 99
        && $number2 >= 0
        && $number2 <= 10
        && strlen($string1) > 0) {

        echo "<p>Int Number =
        $number1</p>\n";
        echo "<p>Real Number = 
        ".number_format($number2, 1)."</p>\n";
        echo "<p>String = 
        $string1</p>\n";
        $error = false;

    }
}

if ($error) {
    echo 'Error. Integer Number must be an integer (1-99), Real Number must 
          be a real number (0.0-10.0), and String cannot be left blank. 
          Please go back and fill out the form again.';
}
于 2013-05-04T03:26:39.167 回答
0

关于什么:

 //first rule
function setRule1($var){
  if (is_numeric($var)){
     if($var < 1 || $var > 99){
        return false; 
     } else return true;
  } else return false;
}

//second rule if you need check number of decimal place
function setRule2($var){
    if (is_numeric($var)){
     if(strlen(array_pop(explode('.',$var))) > 1){//<-- change 1 to desired decimal places.
        return false;
      } else return true;
    } else return false;
}

用法:

if (setRule1($_POST['number1']) && setRule2($_POST['number2']) && $_POST['string1'] != '')//third condistion check if string is blank or not.
{
  $number1 = $_POST['number1'];
  $number2 = $_POST['number2'];
  //and soon...
于 2013-05-04T03:28:38.787 回答