Php 在Codeigniter中清除html输入
大家好 我使用CodeIgniter构建了一个应用程序,遇到了一个问题。我有一个带有文本区的表单,用户可以使用一个简单的编辑器(由驱动)将文本放入其中。问题是需要清理垃圾代码的输入(链接直接从Word粘贴的垃圾代码) 使用CodeIgniter的form_验证库验证表单,并遵循以下规则:Php 在Codeigniter中清除html输入,php,codeigniter,validation,Php,Codeigniter,Validation,大家好 我使用CodeIgniter构建了一个应用程序,遇到了一个问题。我有一个带有文本区的表单,用户可以使用一个简单的编辑器(由驱动)将文本放入其中。问题是需要清理垃圾代码的输入(链接直接从Word粘贴的垃圾代码) 使用CodeIgniter的form_验证库验证表单,并遵循以下规则: array( 'field' => 'job[description]', 'label' => 'Description', 'rules' => 'trim|required|cal
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函数,如回调
,因此这应该是可行的。aI通常会执行的操作只是为了双重安全,在为输入设置规则后,我也会通过以下方式运行它们trim
这将去掉html`$string = filter_var($string, FILTER_SANITIZE_STRING);`
我最近也遇到过输入完全忽略已设置规则的情况。我认为表单验证回调确实需要返回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,而是单独编写每个表单。我会这样做的,我只是觉得在一个地方准备所有数据会很好,哦,好吧。谢谢你的回复。