直到现在我才意识到这一点,但是当使用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函数来预填充值,但在我的情况下,我正在做其他不允许我使用该函数的东西。
感谢任何帮助。
答案 0 :(得分:0)
原来这是内置的。如果你想在表单验证没有通过时关闭表单准备,只需使用MY_Form_validation.php扩展form_validation类,复制原始的run()函数,并注释掉下面的代码:
if ($total_errors > 0)
{
$this->_safe_form_data = TRUE;
}