阻止输入字符串或整数值

时间:2013-12-05 05:08:50

标签: php

这是PHP代码,我想检查是否存在无效值:

$response = $_POST['response'];
$visibility = $_POST['visibility'];


if($response == NULL || $visibility == NULL ){
    printf("Invalid input: %s\n", mysqli_connect_error());
    echo "<br/><a href='myevents.php'>Back to previous page</a>";
    exit();
}

$response$visibility应为整数值 所以如果人们把我想要的字符串值转到if($response == NULL || $visibility == NULL )语句。 如何编写语句$response == ???

3 个答案:

答案 0 :(得分:1)

使用is_numeric将提供所需的结果。 is_numeric查找给定变量是否为数字

if (!is_numeric($response) || is_numeric($visibility))
 echo "Invalid input";

有人建议is_int()。不要使用is_int()。改为使用is_numeric()。

将以下代码块复制到php文件中并运行它。你会对结果感到惊讶:

$t = "12345";
if( is_int($t ) ) {
    echo $t . " is an int!";
} else {
    echo $t . " is not an int!";
}

问题是is_int()认为一串数字是一个字符串,而不是一个整数。

两者之间的关键区别是检查变量类型is_int(),另一个检查变量值is_numeric()

答案 1 :(得分:0)

您可以尝试使用is_nan()功能,

if(is_nan($response) || is_nan($visibility)){
    printf("Invalid input: %s\n", mysqli_connect_error());
    echo "<br/><a href='myevents.php'>Back to previous page</a>";
    exit();
}

var_dump(NAN == NAN); // boolean true
var_dump(NAN === NAN); // boolean true
var_dump(is_nan(NAN)); // boolean true

var_dump(NAN == 12); // boolean true
var_dump(NAN === 12); // boolean false
var_dump(is_nan(12)); // boolean false

var_dump(NAN == 12.4); // boolean true
var_dump(NAN === 12.4); // boolean true
var_dump(is_nan(12.4)); // boolean false

var_dump(NAN == NULL); // boolean true
var_dump(NAN === NULL); // boolean false
var_dump(is_nan(NULL)); // boolean false

var_dump(NAN == 'K<WNPO'); // boolean true
var_dump(NAN === 'K<WNPO'); // boolean false
var_dump(is_nan('K<WNPO')); // null and throws a warning "Warning: is_nan() expects parameter 1 to be double, string given in NANTest.php on line 13"

参考:http://www.php.net/manual/en/function.is-nan.php

答案 2 :(得分:0)

尝试is_numericis_int

请点击以下链接:

http://php.net/is_int

http://www.php.net/is_numeric