[英]Codeigniter Form Validation Not Works
我正在尝试在CodeIgniter中实现表单验证。 请告诉我我的错误是什么。 我的问题是,它总是重定向到错误页面,即使我以html形式填写了所有详细信息,验证也无法正常工作,这意味着详细信息没有进入数据库。 查看页面代码
<!DOCTYPE html>
<html>
<head>
<title>REGISTRATION</title>
</head>
<body>
<form method="POST" action="<?php echo base_url();?>Test/studentinsert" enctype="multipart/form-data">
<label>Name</label>
<input type="text" name="name" id="name"><br>
<label>Age</label>
<input type="number" name="age" id="age"><br>
<label>Address</label>
<textarea name="address" id="address"></textarea><br>
<label>User Name</label>
<input type="text" name="username" id="username"><br>
<label>Password</label>
<input type="Password" name="Password" id="Password"><br>
<label>Gender</label>
<input type="radio" name="gender" value="male">Male
<input type="radio" name="gender" value="female">Female<br>
<label>Qqualifiction</label>
<input type="text" name="quali" id="quali"><br>
<input type="file" name="certificate" id="certificate"><br>
<input type="submit" name="submit" id="submit">
</form>
<a href="<?php echo base_url()?>Test/login">LOGIN</a>
</body>
</html>
控制器页面代码
public function studentinsert()
{
//$this->load->helper(array('form', 'url'));
$this->form_validation->set_rules('name', 'Name', 'required');
$this->form_validation->set_rules('age', 'age', 'required');
$this->form_validation->set_rules('address', 'address', 'required');
$this->form_validation->set_rules('username', 'username', 'required');
$this->form_validation->set_rules('password', 'password', 'required');
$this->form_validation->set_rules('gender', 'gender', 'required');
$this->form_validation->set_rules('quali', 'quali', 'required');
$this->form_validation->set_rules('certificate', 'certificate', 'required');
$config['upload_path'] = './uploads/';
$config['allowed_types'] = '*';
//$config['max_size'] = 100;
$this->load->library('upload',$config);
//$this->load->initialize($config);
$this->upload->do_upload('certificate');
$file="uploads/".$this->upload->data('file_name');
$name=$this->input->post('name');
$userid=mt_rand(100000, 999999);
$age=$this->input->post('age');
$address=$this->input->post('address');
$gender=$this->input->post('gender');
$username=$this->input->post('username');
$hashpassword=hash('md5',$this->input->post('Password'));
$quali=$this->input->post('quali');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('registration');
}
else{
$data=array('file'=>$file,'userid'=>$userid,'name'=>$name,'age'=>$age,'address'=>$address,'gender'=>$gender,'quali'=>$quali,);
$logdata=array('userid'=>$userid,'username'=>$username,'Password'=>$hashpassword);
$ok=$this->modeldata->insertdb($data);
$ok1=$this->modeldata->insertlogin($logdata);
if($ok=="success")
{
$this->load->view('registration');
}
}
}
我已经在构造函数中的控制器中加载了helper(表单,URL,表单验证)类,代码如下
function __construct()
{
parent::__construct();
$this->load->model('modeldata');
// Load url helper
$this->load->helper('url');
$this->load->helper('form');
$this->load->library('form_validation');
}
我修改了代码
public function studentinsert(){
$this->form_validation->set_rules([
[
'field' => 'name',
'label' => 'Name',
'rules' => 'required'
],[
'field' => 'age',
'label' => 'age',
'rules' => 'required'
],[
'field' => 'username',
'label' => 'username',
'rules' => 'required'
],[
'field' => 'password',
'label' => 'password',
'rules' => 'required'
],[
'field' => 'quali',
'label' => 'quali',
'rules' => 'required'
]
]);
$this->load->library('upload',[
'upload_path' => './uploads/',
'allowed_types'=> '*'
]);
$this->upload->do_upload('certificate');
$file="uploads/".$this->upload->data('file_name');
$userid=mt_rand(100000, 999999);
$name=$this->input->post('name');
$userid=mt_rand(100000, 999999);
$age=$this->input->post('age');
$address=$this->input->post('address');
$gender=$this->input->post('gender');
$username=$this->input->post('username');
$hashpassword=hash('md5',$this->input->post('Password'));
$quali=$this->input->post('quali');
if ($this->form_validation->run() == FALSE){
$this->load->view('registration');
}else{
$data=array('file'=>$file,'userid'=>$userid,'name'=>$name,'age'=>$age,'address'=>$address,'gender'=>$gender,'quali'=>$quali,);
$logdata=array('userid'=>$userid,'username'=>$username,'Password'=>$hashpassword);
$ok=$this->modeldata->insertdb($data);
$ok1=$this->modeldata->insertlogin($logdata);
if($ok=="success"){
$this->load->view('registration');
}
}
}
假设有一个$_POST['certificate']
(不存在,但$_FILES['certificate']
确实存在), $_FILES['certificate']
certificate
和codeigniter设置了验证规则,删除了$this->form_validation->set_rules('certificate', 'certificate', 'required');
规则并使用isset($_FILES['certificate'])
代替。 然后如果找不到它,则可能重定向到错误页面
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.