我遇到了一个问题,如果我提交单引号 ( ' ) 或双引号 ( " ) 之类的字符,并且如果我在提交表单后保留这些值(例如,由于验证失败),我会得到像 ' 这样的表单值和 ”
我尝试了很多东西,比如 -
$this->input->post("field", true)
通过而不是访问表单值$_POST
,- 从配置中启用 XSS 过滤,
- 使用
$this->security->xss_clean($data);
但没有任何帮助。最后,我去了 system\helpers\form_helper.php 并在第 177 行更改了函数 form_input 如下 -
上一个:$defaults = array('type' => 'text', 'name' => (( ! is_array($data)) ? $data : ''), 'value' => $value);
之后:$defaults = array('type' => 'text', 'name' => (( ! is_array($data)) ? $data : ''), 'value' => html_entity_decode($value, ENT_QUOTES, 'UTF-8'));
到目前为止,这已经解决了我的问题,没有任何中断。
我只想知道这是否是达到目的的正确方法?