我正在尝试验证某个输入,其中用户只能输入整数值...否则将执行错误消息
$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_integer
和ctype_digit
,但结果相同,它不接受 NULL 价值观。
答案 0 :(得分:6)
这可能是因为null
不是数值。它是无效的;它什么都没有,它肯定不等于整数0.如果你想检查一个数值,或者为null,那么这正是你应该做的:
if( $yourvalue !== null && !is_numeric( $yourvalue ) ) {
}
答案 1 :(得分: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的this页面(这些样本很多)
答案 2 :(得分: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());
}
答案 3 :(得分:0)
这样做:
$user_mcc = empty($_REQUEST['mobile_countrycode']) ? null : $_REQUEST['mobile_countrycode'];
if (null === $user_mcc || !is_numeric($user_mcc)) {
// Not a numeric value
}