E.g。我的控制器里有这样的东西:
$this->form_validation->set_rules('email', 'Email', 'required|valid_email|xss_clean');
$this->form_validation->set_rules('name', 'Name', 'trim|xss_clean');
现在我的问题是,如果我稍后在我的代码中执行类似的操作(在同一方法中):
$user_profiles = array(
'email' => $_POST['email'],
'name' => $_POST['name']
);
请问,此阵列中的变量是否已消毒?
我的意思是form_validation-> set_rules是否会保留$ _POST值的所有后期代码使用,或者我需要使用其他一些技术?
答案 0 :(得分:4)
Codeigniter提供了一个输入类,它有一个方法帖子,可以在表单验证消毒后获得你需要的值:
$user_profiles = array(
'email' => $this->input->post('email'),
'name' => $this->input->post('name')
);
我或多或少会建议你使用$ this-> input-> post()而不是$ _POST,除非有特殊原因不这样做。文档对输入类有更多的解释和用法:http://ellislab.com/codeigniter/user_guide/libraries/input.html。
答案 1 :(得分:1)
我不是100%肯定,但据我所知,form_validation只测试给定参数的变量,但不要清理它们。
我在处理表单数据时总是使用$postdata = $this->input->post(NULL, TRUE);
。