Php 规范点火器中不同条件的表格验证
因此,我有一个用于两个函数/条件的表单:Save(add)和Update 现在我为输入文本设置了一个规则:Php 规范点火器中不同条件的表格验证,php,codeigniter,Php,Codeigniter,因此,我有一个用于两个函数/条件的表单:Save(add)和Update 现在我为输入文本设置了一个规则:$this->form\u validation->set\u rules('ID\u user','user ID','required') 逻辑是这样的:如果用户处于保存状态,则我的输入文本将被启用,因为他们将输入他们的id;如果用户处于更新状态,则我的输入文本将被禁用,而文本将是当前用户id,因为他们无法更改其用户id 这是我的控制器中的保存(添加)和更新功能: function ad
$this->form\u validation->set\u rules('ID\u user','user ID','required')代码>
逻辑是这样的:如果用户处于保存状态,则我的输入文本将被启用,因为他们将输入他们的id;如果用户处于更新状态,则我的输入文本将被禁用,而文本将是当前用户id,因为他们无法更改其用户id
这是我的控制器中的保存(添加)和更新功能:
function add(){
//set common properties
$data['title'] = 'Tambah User baru';
$data['action'] = site_url('user/add');
$data['link_back'] = anchor('user/index/', 'Back to User list', array('class'=>'back'));
$this->_set_rules();
//run validation
if($this->form_validation->run() == false){
$data['message'] = '';
//bedakan add/update
$data['validate'] = 'add';
//set common properties
$data['title'] = 'Add new User';
//$data['message'] = '';
$data['user']['ID_user'] = '';
$data['user']['pass'] = '';
$data['user']['nama'] = '';
$data['user']['email'] = '';
$data['user']['active'] = '';
$data['link_back'] = anchor('user/index/', 'Lihat daftar User', array('class'=>'back'));
$this->load->view('user_form_v', $data);
}
else{
//save data
$user = array('ID_user'=>$this->input->post('ID_user'),
'pass'=>sha1($this->input->post('pass')),
'nama'=>$this->input->post('nama'),
'email'=>$this->input->post('email'),
'active'=>$this->input->post('active'),
'regis_date'=>date('Y-m-d H:i:s'));
$ID_user = $this->user_m->save($user);
//set form input nama = "id"
$this->validation->ID_user = $ID_user;
redirect('user/index/add_success');
}
}
function update($ID_user){
//set common properties
$data['title'] = 'Update user';
$this->load->library('form_validation');
//set validation properties
$this->_set_rules();
$data['action'] = ('user/update/'.$ID_user);
//bedakan add/update
$data['validate'] = 'update';
//run validation
if ($this->form_validation->run() == false){
$data['message'] = '';
$data['user'] = $this->user_m->get_by_id($ID_user)->row_array();
//set common properties
$data['title'] = 'Update User';
$data['message'] = '';
}
else{
//save data
$ID_user = $this->input->post('ID_user');
$user = array(
'pass'=>$this->input->post('pass'),
'nama'=>$this->input->post('nama'),
'email'=>$this->input->post('email'),
'active'=>$this->input->post('active'),
'regis_date'=>date('Y-m-d H:i:s'));
$this->user_m->update($ID_user, $user);
$data['user'] = $this->user_m->get_by_id($ID_user)->row_array();
//set user message
$data['message'] = 'Update User Success!';
}
$data['link_back'] = anchor('user/index/', 'Lihat daftar user', array('class'=>'back'));
//load view
$this->load->view('user_form_v', $data);
}
这是视图中的输入类型:
<input type="text" name="ID_user" class="text"
<?php if($validate!='add'){echo "disabled";} ?>
value="<?php echo (isset($user['ID_user']))?$user['ID_user']:""?>"/>
您应该运行两个不同的规则—一个用于“保存”,另一个用于“更新”
然后在保存规则中,包括用户id的规则
在更新规则中,不要包含用户id
将用户id放入表单上的“隐藏”字段并非最佳选择-因为有人可以“编辑”页面并将隐藏字段更改为其他内容-从而打开应用程序进行操作您应该运行两个不同的规则-一个用于“保存”,另一个用于“更新”
然后在保存规则中,包括用户id的规则
在更新规则中,不要包含用户id
将用户id放入表单上的“隐藏”字段并非最佳选择-因为有人可以“编辑”页面并将隐藏字段更改为其他内容-从而打开应用程序进行操作您可以将用户id字段作为隐藏字段包含在更新表单中,以确保它与表单的其余部分一起提交田地
<input type="hidden" name="user[ID_user]" value="<?=$user['ID_user']?>" />
您可以将用户ID字段作为隐藏字段包含在更新表单中,以确保它与表单的其余字段一起提交
<input type="hidden" name="user[ID_user]" value="<?=$user['ID_user']?>" />
超出主题当比较布尔值(如真或假)时,您必须使用“===”ex,如果($TRUE==TRUE)@tomexsans我不这么认为,使用“==”时运行平稳谢谢:染色平滑,但为了良好的实践,使用===当比较布尔值(如真或假)时,请从主题中读出此内容。当比较布尔值(如真或假)时,您必须使用“==”ex,如果($true==true)@tomexans我不这么认为,事情进展顺利谢谢:它可以顺利地传输,但为了更好的实践,请使用===当比较布尔值时,请阅读此内容。如果您使用此解决方案,我会非常小心。请参阅Shift Exchange的答案,了解原因。我同意Shift Exchange…这就是我在回答的最后一句中说的确保针对登录者验证它的原因(应保存在会话或cookie中)。它就像表单中的任何其他输入字段一样,在写入db之前始终进行验证。如果您使用此解决方案,我会非常小心。请参阅Shift Exchange的答案了解原因。我同意Shift Exchange…这就是我在回答的最后一句中说的确保针对登录者验证它的原因(应该保存在会话或cookie中)。它与表单中的任何其他输入字段一样,总是在写入数据库之前进行验证。