Php 在Codeigniter中清除html输入

Php 在Codeigniter中清除html输入,php,codeigniter,validation,Php,Codeigniter,Validation,大家好 我使用CodeIgniter构建了一个应用程序,遇到了一个问题。我有一个带有文本区的表单,用户可以使用一个简单的编辑器(由驱动)将文本放入其中。问题是需要清理垃圾代码的输入(链接直接从Word粘贴的垃圾代码) 使用CodeIgniter的form_验证库验证表单,并遵循以下规则: array( 'field' => 'job[description]', 'label' => 'Description', 'rules' => 'trim|required|cal

大家好

我使用CodeIgniter构建了一个应用程序,遇到了一个问题。我有一个带有文本区的表单,用户可以使用一个简单的编辑器(由驱动)将文本放入其中。问题是需要清理垃圾代码的输入(链接直接从Word粘贴的垃圾代码)

使用CodeIgniter的form_验证库验证表单,并遵循以下规则:

array(
 'field' => 'job[description]',
 'label' => 'Description',
 'rules' => 'trim|required|callback_clean_html'
),
然后我有一个clean_html方法,它只执行以下操作:

return strip_tags($text,'<a><p><br><strong><em><h3><h4><h5><ul><ol><li>');
返回条标签($text,
  • ); 问题是这被忽略,原始文本被插入数据库。方法运行(我已经测试过)。我估计这是因为回调应该返回TRUE或FALSE,但是xss_clean不会返回BOOL。这些文档没有多大帮助

    有什么想法吗


    提前感谢。

    您是否尝试删除规则中的
    回调
    ?您可以执行常规的PHP函数,如
    trim
    ,因此这应该是可行的。

    aI通常会执行的操作只是为了双重安全,在为输入设置规则后,我也会通过以下方式运行它们

    `$string = filter_var($string, FILTER_SANITIZE_STRING);`
    
    这将去掉html


    我最近也遇到过输入完全忽略已设置规则的情况。

    我认为表单验证回调确实需要返回bool。我发现当您需要向用户显示错误消息(通常是重新提交表单)时,表单验证非常有用。尽管准备函数很方便,但它们不需要在那里进行验证。为什么不在表单提交后但在将其发送到db之前,通过strip_tags函数传递提交的字符串?

    xss_clean和其他CI验证函数返回非bool值。我刚刚在CI版本1.7.2中测试了以下回调函数:

    function test_string_change($str)
    {
        return "$str **";
    }
    

    已使用回调\u测试\u字符串\u更改成功更改字符串。我知道1.7.0中的回调函数有一些问题,您使用的是最新版本吗?

    从您发布的内容来看,它应该可以工作。“回调”前缀和返回值都是正确的。验证方法可以返回非布尔值,这将替换该值。检查form_验证文档,它明确指出


    所以你的问题一定是在你没有发布的代码的某个地方。

    我建议不要在库中使用表单_validation.php,而是单独编写每个表单。我会这样做的,我只是觉得在一个地方准备所有数据会很好,哦,好吧。谢谢你的回复。