整数验证的最佳选项:intval()或filter_input()或者铸造int的

时间:2015-11-24 20:16:52

标签: php mysql validation

我想确保在int查询中使用之前清除并验证MySQL值。

这个项目没有使用预备语句,因为我意识到这是最好的选择,我特别询问有关投射intintval()filter_input()的信息。

如果我进入$_POST['user_id']

$user_id = (int) $_POST['user_id'];
$user_id = intval($_POST['user_id');
$user_id = (int) filter_input(INPUT_POST, "user_id", FILTER_SANITIZE_NUMBER_INT); 
$user_id = intval(filter_input(INPUT_POST, "user_id", FILTER_SANITIZE_NUMBER_INT)); 

其中哪一个是最佳选择?为了确保我使用整数,它被验证 - 如果它失败,它将返回0。

2 个答案:

答案 0 :(得分:2)

您可能希望使用FILTER_VALIDATE_INT

编辑:使用min_range选项1,假设您在数据库中使用AUTO_INCREMENT user_id

if($user_id = filter_input(INPUT_POST, 'user_id', FILTER_VALIDATE_INT, 1)){ 
    //success
}

这验证它是一个整数,然后在验证通过时返回一个已清理的变量。

答案 1 :(得分:0)

我会用

$user_id = ctype_digit($_POST["user_id"]) ? (int)$_POST["user_id"] : 0;

$test = "123"; // 123
$test1 = "0123"; // 123
$test2 = "-123"; // 0
$test3 = "+123"; // 0
$test4 = "false"; // 0
$test5 = "null"; // 0
$test6 = "asd23"; // 0
$test6 = "23asd"; // 0
$test6 = "+123asd23"; // 0