警告:trim()期望参数1是字符串,在php脚本中给出数组

时间:2014-01-02 20:03:41

标签: php warnings xss

我有php脚本,当我执行此代码时,我收到警告

  

警告:trim()期望参数1为字符串,在home / public_html中给出数组

我为安全漏洞添加了antixss功能,如下面的代码所示。我该如何解决此警告?

<?php
$email_to = ""; 
$email_subject = ""; 
$success = ""; 

function antixss($value)
{
    $xss = htmlspecialchars(trim($value));
    return $xss;
}


if(!isset($_POST['First_Name']) ||
   !isset($_POST['Last_Name']) 
    {
    died('Sorry, there appears to be a problem.');      
}
$first_name =antixss($_POST['First_Name']); 
$last_name = antixss($_POST['Last_Name']);    

如何解决此警告?感谢

2 个答案:

答案 0 :(得分:1)

看来错误出现在你的HTML中,而不是在php中。

如果$_POST['First_Name']是一个不应该是的数组,那么很可能你的html看起来像:

<input name="First_Name[]" ...>
                       ^^ here, remove this

答案 1 :(得分:0)

首先,你的IF语句全部搞砸了

if(!isset($_POST['First_Name']) || !isset($_POST['Last_Name']) || 
    {
    died('Sorry, there appears to be a problem.');      
}

用支架开始,用OR符号(||)结束。首先修复,如下所示:

if(!isset($_POST['First_Name']) || !isset($_POST['Last_Name'])){
    died('Sorry, there appears to be a problem.');
}

然后,如果问题仍然存在,请在var_dump($value)和/ var_dump($_POST)内部输入antixss()函数,这样就可以这样了

function antixss($value){
    var_dump($value); var_dump($_POST); exit();
    $xss = htmlspecialchars(trim($value));
    return $xss;
}

告诉我们输出是什么。