
filter_input() 函数是 PHP 中用于从外部获取输入并进行过滤的关键函数。它允许我们指定输入类型(例如 INPUT_POST, INPUT_GET),输入变量的名称,以及要使用的过滤器类型。当内置的过滤器类型无法满足需求时,我们可以使用 FILTER_CALLBACK 结合自定义函数来实现更灵活的验证逻辑。
正确使用 FILTER_CALLBACK
filter_input() 函数的 FILTER_CALLBACK 选项允许我们使用自定义函数来验证和过滤输入。然而,正确配置 FILTER_CALLBACK 的 options 参数至关重要。
以下是一个示例,演示了如何创建一个自定义的字符串验证函数,并将其应用于 filter_input():
<form method="POST" name="textfield" id="textfield" action="" required>
<label for="name">Name:</label><br>
<input type="text" name="name" id="name" maxlength="255" size="25">
<br>
<button type="reset">Reset!</button>
<br>
<button type="submit" name="submit" id="submit">Submit!</button><br>
</form>
<?php
if($_SERVER['REQUEST_METHOD']==='POST')
{
$name = $_POST['name'];
function validateString($data)
{
if(is_string($data))
{
return true;
}
else
{
return false;
}
}
if(!filter_input(INPUT_POST, "name", FILTER_CALLBACK, array("options" => "validateString")))
{
die("Enter a valid STRING!");
}
else {
echo "Valid String!";
}
}
?>
登录后复制
代码解释:
- validateString($data) 函数: 这是一个自定义的验证函数,它接受一个参数 $data,并检查它是否为字符串。如果是字符串,则返回 true,否则返回 false。
-
filter_input() 函数: filter_input(INPUT_POST, “name”, FILTER_CALLBACK, array(“options” => “validateString”)) 这行代码是关键。
- INPUT_POST 指定从 POST 请求中获取输入。
- “name” 指定要获取的输入字段的名称。
- FILTER_CALLBACK 指定使用回调函数进行过滤。
- array(“options” => “validateString”) 这是 FILTER_CALLBACK 的 options 参数。它告诉 filter_input() 使用 validateString 函数作为回调函数。 注意,这里传递的是函数名字符串,而不是直接传递函数本身。
注意事项:
- 确保回调函数存在并且可以被访问。
- 回调函数必须接受一个参数,该参数是要验证的数据。
- 回调函数应该返回 true 如果数据有效,否则返回 false。
- filter_input() 的 options 参数必须是一个关联数组,其中包含键 “options”,其值为回调函数的名称。
总结:
filter_input() 结合 FILTER_CALLBACK 提供了一种强大的方式来验证和过滤输入数据。通过创建自定义的回调函数,我们可以实现各种复杂的验证逻辑。关键在于正确配置 FILTER_CALLBACK 的 options 参数,以确保回调函数能够被正确调用。 理解并正确使用这些概念,可以帮助你构建更安全、更健壮的 PHP 应用程序。
以上就是使用 filter_input() 实现自定义验证的回调函数的详细内容,更多请关注php中文网其它相关文章!