如果验证失败,为什么Codeigniter会自动转换表单验证类中的特殊实体?

时间:2013-06-13 16:12:35

标签: php codeigniter validation html-entities

直到现在我才意识到这一点,但是当使用CodeIgniter表单验证类时,如果验证失败($ this-> form_validation-> run()=== FALSE),则post变量中的所有特殊字符转换,包括文本输入中的任何单引号或双引号。有没有办法关闭这种行为?我使用html_escape命令在我的项目中预填充所有表单,如下所示:

<input value="<?php echo html_escape($this->input->post('value'));?>" />

html_escape第二次执行htmlspecialchars,在表单中显示html实体。我没有设置使用“prep_for_form”的任何规则,并且XSS被关闭,所以我不知道为什么CI会选择为我这样做。

另外,我确实知道set_value函数来预填充值,但在我的情况下,我正在做其他不允许我使用该函数的东西。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

原来这是内置的。如果你想在表单验证没有通过时关闭表单准备,只需使用MY_Form_validation.php扩展form_validation类,复制原始的run()函数,并注释掉下面的代码:

if ($total_errors > 0)
{
    $this->_safe_form_data = TRUE;
}