-1

我有这个 PHP 代码:

<?php
    $score11 = $_POST['passmarks12'];

    if($_POST['passmarks12'] > 100){
        $grade11 = "";
    }
    elseif ($_POST['passmarks12'] < 45){
        $grade11 = "Fail";
    }
    $strg = " $grade11";

    echo $strg;

?>

无论发送什么,代码总是打印“失败”。

我想要它,这样如果它传入空白或无效输入,它就会失败。

我应该如何正确清理输入?

4

4 回答 4

1

试试这个:

<?php

    //$_POST['passmarks12'] = '';

    if(empty($_POST['passmarks12']) || $_POST['passmarks12'] > 100)
    {
        $grade11 = "";
    }

    else if ($_POST['passmarks12'] < 45){

        $grade11 = "Fail";
    } else{
            $grade11 = "Pass";
    }
    $strg = " $grade11" ;

    echo $strg;

    ?>
于 2013-05-19T08:52:49.600 回答
1

要点:

  1. 使用 .检查是否$_POST['key']存在isset
  2. 检查是否$_POST['key']具有有效的数据类型string
    它可能以数组的形式出现。
  3. 检查是否$_POST['key']具有有效的数字格式。
  4. 比较$_POST['key'](String)45(Integer),使用intval.

例子:

<?php

switch (true) {

    case !isset($_POST['passmarks12']):
    case !is_string($score = $_POST['passmarks12']):
    case !is_numeric($score):
        $result = 'Error (Invalid parameter)';
        break;
    case (intval($score) < 45):
        $result = 'Fail (Less than 45)';
        break;
    default:
        $result = 'Success (No less than 45)';

}

echo $result;
于 2013-05-19T08:53:47.577 回答
0

我想你想要

elseif ($_POST['passmarks12'] < 45 && !empty($_POST['passmarks12']))
于 2013-05-19T08:48:14.707 回答
-1

$_POST此 PHP 代码将在与 100 进行比较之前确保它不为空。

<?php
    $score11 = $_POST['passmarks12'];

    if(empty($_POST['passmarks12']) || $_POST['passmarks12'] > 100)
        $grade11 = "";

    elseif ($_POST['passmarks12'] < 45)
        $grade11 = "Fail";

    $strg = " $grade11" ;

    echo $strg;

?>
于 2013-05-19T08:49:34.557 回答