警告:filter_input():第一个参数应该是一个有效的回调函数



我试图在filter_input()中使用CALLBACK函数并得到此错误:

警告:filter_input():第一个参数预计是一个有效的回调C:xampphtdocsTEST.php on line…

尝试

<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 FILTER_VALIDATE_STRING($data)
{
if(is_string($data))
{
$value = TRUE;
}
else
{
$value = FALSE;     
}
GLOBAL $value;
return $value;
}

echo FILTER_VALIDATE_STRING($name);
if(!filter_input(INPUT_POST,"name",FILTER_CALLBACK,
"FILTER_VALIDATE_STRING"))
{
die("Enter a valid STRING!");
}
}
?>

我试图在函数filter_input()中创建一个自定义VALIDATOR。到目前为止,我们已经将这些内置到php中:a .

filter_input(INPUT_POST,"input",FILTER_VALIDATE_URL)

b .

filter_input(INPUT_POST,"input",FILTER_VALIDATE_EMAIL)

存在上述2个验证器。但下面这个不行:

filter_input(INPUT_POST,"input",FILTER_VALIDATE_STRING)

我知道,我们有STRING SANITIZER:

filter_input(INPUT_POST,"input",FILTER_SANITIZE_STRING)

但是我不想清理用户(表单输入)的输入。我想验证一下。因此,现在尝试构建我自己的FILTER_VALIDATE_STRING以在filter_input()函数中使用。我知道还有其他验证字符串的方法,但我想学习如何构建自己的函数或任何与filter_input()函数一起使用它的方法。这就是现在的任务。我将感谢任何人编辑我的代码作为修复或回答这个问题。

我想你已经接近了,但是你应该仔细看看回调页面(https://www.php.net/manual/en/filter.filters.misc.php)上的例子。

自定义回调需要一个具有options键的数组:

filter_var($string, FILTER_CALLBACK, array('options' => 'FILTER_VALIDATE_STRING'));

注意,标量类型使用filter_var转换为字符串。我对filter_input不确定。

最新更新