3

我正在尝试验证某个输入,其中用户可以只输入整数值...否则将执行错误消息

$user_mcc = $_REQUEST['mobile_countrycode'];
if($user_mcc == ""){
    is_numeric($_REQUEST['mobile_countrycode']);
}

if (!is_numeric($_REQUEST['mobile_countrycode'])){

    echo '<script type="text/javascript">alert("Not a numeric value!\n\nMake sure that your country codes, area codes\nand mobile/fax/phone numbers are correct! \n"); return true;</script>';
    echo '<script type="text/javascript">history.back();</script>'; 
    die('' . mysql_error());



}

我已经尝试了很多功能,例如, ,empty等等is_null......但它没有用。== NULL== 'NULL

如果我在输入文本字段中输入一个字符串值,比如我输入... "Banana",则!is_numeric可以执行上面的函数,因为输入的值是FALSE而不是数值。

但是,每当我将输入字段留空时NULL,该!is_numeric函数仍然可以执行,就像它将一个NULL值识别为不是数值一样。!is_numeric如果输入值为.我该怎么做才能绕过功能NULL。谢谢你。

PS:我已经尝试过!is_int, !is_integerand ctype_digit,但结果相同,它不接受NULL值。

4

4 回答 4

6

那可能是因为null 不是数值。它是无效的;它什么都不是,它肯定不等于整数 0。如果你想检查一个数值或 null,那么这正是你应该做的:

if( $yourvalue !== null && !is_numeric( $yourvalue ) ) {
}
于 2012-08-08T08:24:13.463 回答
0

只需这样做:

function is_numeric_not_null($var) {
    return(($var != "") && ($var != NULL) && is_numeric($var));
}

$user_mcc = $_REQUEST['mobile_countrycode'];

if (!is_numeric_not_null($user_mcc)){

    echo '<script type="text/javascript">alert("Not a numeric value!\n\nMake sure that your country codes, area codes\nand mobile/fax/phone numbers are correct! \n"); return true;</script>';
    echo '<script type="text/javascript">history.back();</script>'; 
    die(mysql_error());
}
于 2012-08-08T08:23:53.730 回答
0

只需这样做:

$user_mcc = empty($_REQUEST['mobile_countrycode']) ? null : $_REQUEST['mobile_countrycode'];

if (null === $user_mcc || !is_numeric($user_mcc)) {
    // Not a numeric value
}
于 2012-08-08T08:30:05.820 回答
0

我认为,它适用于以下代码:

$isNumeric = false;
// Verify your var exist
if (isset($_REQUEST['mobile_countrycode'])){    
    // if var exist, you create $user_mcc
    $user_mcc = $_REQUEST['mobile_countrycode'];

    // test empty and null values [ == if(!empty($user_mcc) ]
    if (("" != $user_mcc) && ( NULL != $user_mcc)){
        // if value is not NULL and not empty test if value is numeric...
        if (is_numeric($user_mcc)){
            // Your value is Numeric
            $isNumeric = true;
        }
    }
}

之后,如果您的值不是数值,则可以使用 $isNumeric boolean :

if (!$isNumeric){ // [ == if ( $user_mcc is not numeric ^^ ) ]
    echo '<script type="text/javascript">alert("Not a numeric value!\n\nMake sure that your country codes, area codes\nand mobile/fax/phone numbers are correct! \n"); return true;</script>';
    echo '<script type="text/javascript">history.back();</script>'; 
    die('' . mysql_error());
}

有关更多示例或详细信息,您可以阅读Php.net 的页面(它们有很多示例)

于 2012-08-08T08:15:23.493 回答