Codeigniter表单验证不起作用

时间:2017-08-16 17:57:02

标签: php html5 codeigniter

我正在尝试在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(form,url,form validation)类,代码如下

function __construct()
{
    parent::__construct();
    $this->load->model('modeldata');
    // Load url helper
    $this->load->helper('url');
    $this->load->helper('form');
    $this->load->library('form_validation');

}

1 个答案:

答案 0 :(得分:1)

我将代码修改为此

>>> import io, sys
>>> from contextlib import redirect_stdout, redirect_stderr
>>> from tqdm import tqdm
>>> def foo():
...     print('spam to stdout')
...     print('spam to stderr', file=sys.stderr)
...     
>>> out = io.StringIO()
>>> err = io.StringIO()
>>> with redirect_stdout(out), redirect_stderr(err):
...     for x in tqdm(range(3), file=sys.__stdout__):
...         print(x)  # more spam
...         foo()
...         
100%|██████████| 3/3 [00:00<00:00, 29330.80it/s]
>>> out.getvalue()
'0\nspam to stdout\n1\nspam to stdout\n2\nspam to stdout\n'
>>> err.getvalue()
'spam to stderr\nspam to stderr\nspam to stderr\n'

您有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'); } } } 的验证规则集,并且codeigniter假设有certificate(不存在但$_POST['certificate']不存在) 删除$_FILES['certificate']规则并改用$this->form_validation->set_rules('certificate', 'certificate', 'required');。如果找不到,可能会重定向到错误页面

相关问题