2013-05-04 4 views
1

Я очень новичок в таких вещах, поэтому, пожалуйста, простите меня, если это действительно глупый вопрос, но мне не удается изменить код, и мне просто нужно руководство.Простая проверка формы PHP

В любом случае, мне нужно сделать форму, которая позволяет пользователю вводить 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 для правил, которые будут реализованы, но я не могу понять, как это сделать.

Любые советы/помощь действительно оценены.

Спасибо!

ответ

1

1-й вход должен быть целым числом от 1-99:

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

2-й вход должен быть действительным числом от 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.'; 
} 
+0

+1 Очень красиво конденсируется – SnareChops

+0

Вы понятия не имеете, сколько я ценю вашу помощь. Это, кажется, имеет смысл, но когда я пытаюсь запустить этот код, я все равно получаю сообщение об ошибке. Теперь я вижу эту ошибку: "Неопределенная переменная: number1 в C: \ XAMPP \ HTDOCS \ phpform.php в строке 11" ... Линия 11: если (is_int ($ number1) Я Мне жаль, что я сейчас так глуп. Я знаю, что мне нужно понять, в чем проблема, но мой мозг жарится, и я просто так смущен. –

+0

@sallydraper У меня может быть какая-то опечатка. теперь нужно исправлять. – Antony

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... 
Смежные вопросы