直到现在我才意识到这一点,但是在使用 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 函数,但就我而言,我正在做其他一些不允许我使用该函数的事情。
任何帮助表示赞赏。