简单的PHP表单验证

时间:2013-05-04 03:05:54

标签: php forms validation

我非常喜欢这种东西,所以请原谅我这是一个非常愚蠢的问题,但是我修改代码时遇到了麻烦,我只需要一些指导。

无论如何,我需要制作一个允许用户输入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语句,但我无法弄清楚正确的方法。

真的很感激任何建议/帮助。

谢谢!

2 个答案:

答案 0 :(得分: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.';
}

答案 1 :(得分: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...