Php 如何从codeigniter中的表单验证控制器访问数据?
我按照教程制作了一个带有验证的注册表,其中包含2个视图和1个控制器 我在控制器中写下:Php 如何从codeigniter中的表单验证控制器访问数据?,php,sql,codeigniter,Php,Sql,Codeigniter,我按照教程制作了一个带有验证的注册表,其中包含2个视图和1个控制器 我在控制器中写下: function index() { $this->load->helper(array('form', 'url')); $this->load->library('form_validation'); $this->form_validation->set_rules('username', 'Username', 'trim|required
function index()
{
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[3]|max_length[16]|xss_clean|callback_username_check');
$this->form_validation->set_rules('password', 'Password', 'trim|required|matches[passconf]|md5');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('register_form');
}
else
{
$this->load->view('register_success');
$data = array(
'IDUser' => NULL ,
'Username' => "$username" ,
'Password' => 'password' ,
'Email' => 'email' ,
'Gender' => 'gender' ,
'Birthday' => 'bday' ,
);
$this->db->insert('Accounts', $data);
}
}
首先,它执行一个有效的sql插入。之后,进行验证。然而,从数据库加载的值不是来自验证的值。相反,它们在数组中是相同的纯文本
我不想通过POST直接从表单/视图中获取值;那是毫无意义的。我该怎么办?我是Codeigniter新手,对OOP PHP不太熟悉。您只需使用Codeigniter输入类: 因此,在你的情况下:
$username = $this->input->post('username');
$password = $this->input->post('password');
$passconf = $this->input->post('passconf');
$email = $this->input->post('email');
dragu是正确的,但请使用以下格式:
$username = $this->input->post('username', TRUE);
TRUE告诉codeigniter使用XSS clean,这是您绝对想要的安全特性。这也是为什么要在表单验证中清除XSS。例如:
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[3]|max_length[16]|xss_clean|callback_username_check');
如果表单验证失败,CI可以再次在表单中显示结果。在验证中使用xss_clean会清除这些值