trim()期望参数1是字符串,给定的数组

时间:2014-04-07 15:46:28

标签: php

我有这个PHP函数,用于将所有html特殊字符转换为html实体,兼容UTF-8。

function safe($input) {

 $text = trim($input); //<-- LINE 31

 $text = preg_replace("/(\r\n|\n|\r)/", "\n", $text); // cross-platform newlines
 $text = preg_replace("/\n\n\n\n+/", "\n", $text); // take care of duplicates 

 $text = htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
 $text = stripslashes($text);

 $text = str_replace ( "\n", " ", $text );
 $text = str_replace ( "\t", " ", $text );

 return $text;

}

现在,我使用acunetix web vuln scanner检查我的脚本,我看到了这个错误:

This page contains an error/warning message that may disclose sensitive information.The message can also contain the location of the file that produced the unhandled exception.

This may be a false positive if the error message is found in documentation pages.
This vulnerability affects /cms/submit.php. 
Discovered by: Scripting (Error_Message.script). 
Attack details
URL encoded POST input access was set to 2
Error message found: 

<b>Warning</b>:  trim() expects parameter 1 to be string, array given in <b>C:\xampp\htdocs\cms\includes\safefunc.php</b> on line <b>31</b><br />

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

正如其他人所说,错误是自我解释的,并且此函数不是为处理数组而构建的。如果你需要处理数组,那么像这样:

function safe($input) {
    if(is_array($input)) {
        return array_map('safe', $input);
    }
    // rest of code
}

答案 1 :(得分:0)

阅读警告,你的答案就在那里。

Trim必须接收一个字符串作为参数,而不是数组。 使用

var_dump($input)检查您的输入变量类型。

你能展示调用函数 safe()的代码吗?

答案 2 :(得分:0)

尝试使用来对$ input进行字符串化

<section> <div class="grid"> <div onclick="setText();"></div> <div onclick="this.innerHTML=prompt('Enter a number')"></div> <div onclick="this.innerHTML=prompt('Enter a number')"></div> <div onclick="this.innerHTML=prompt('Enter a number')"></div> <div onclick="this.innerHTML=prompt('Enter a number')"></div> <div onclick="this.innerHTML=prompt('Enter a number')"></div> <div onclick="this.innerHTML=prompt('Enter a number')"></div> <div onclick="this.innerHTML=prompt('Enter a number')"></div> <div onclick="this.innerHTML=prompt('Enter a number')"></div> <div onclick="this.innerHTML=prompt('Enter a number')"></div> <div onclick="this.innerHTML=prompt('Enter a number')"></div> <div onclick="this.innerHTML=prompt('Enter a number')"></div> <div onclick="this.innerHTML=prompt('Enter a number')"></div> <div onclick="this.innerHTML=prompt('Enter a number')"></div> <div onclick="this.innerHTML=prompt('Enter a number')"></div> <div onclick="this.innerHTML=prompt('Enter a number')"></div> </div> <section>

对我有用