【问题标题】:Warning: filter_input(): First argument is expected to be a valid callback in警告:filter_input():第一个参数应该是一个有效的回调
【发布时间】:2021-10-28 17:34:29
【问题描述】:

我正在尝试在 filter_input() 中使用 CALLBACK 函数并收到此错误:

警告:filter_input():第一个参数应该是在线 C:\xampp\htdocs\TEST.php 中的有效回调 ...

尝试

<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() 中创建自定义验证器。 到目前为止,我们得到了这些内置的 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() 函数一起使用。这就是现在的任务。 如果有人编辑我的代码作为此问题的修复或答案,我将不胜感激。

【问题讨论】:

标签: php string forms callback filter-input


【解决方案1】:

我认为您已经接近了,但您应该仔细查看回调页面 (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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-06-06
  • 2014-11-22
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 2021-11-09
  • 2015-10-18
  • 2020-01-26
相关资源
最近更新 更多