codeigniter中的表单验证始终返回false

时间:2017-01-30 08:48:07

标签: php codeigniter

我是codeigniter的新用户,我无法弄清楚为什么form_validation继续返回false。这是我的代码:

登录控制器

class Login extends CI_Controller {

     function __construct()
     {
       parent::__construct();
       $this->load->helper(array('form','url'));
       $this->load->library('form_validation');
       $this->load->library('session');
       $this->load->model('user','',TRUE);
     }

     function index()
     {
        $this->load->view('login_view');
     }

     function user_registration_show(){

        $this->load->view('registration_view');

     }

     function user_login_process(){


     }

     function user_registration_process(){

        $this->form_validation->set_rules('fname', 'First Name', 'trim|required|xss_clean');
        $this->form_validation->set_rules('lname', 'Last Name', 'trim|required|xss_clean');
        $this->form_validation->set_rules('gender', 'Gender', 'trim|required|xss_clean');
        $this->form_validation->set_rules('address', 'Address', 'trim|required|xss_clean');
        $this->form_validation->set_rules('emailadd', 'Email Address', 'trim|required|xss_clean');
        $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
        $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean');
        $this->form_validation->set_rules('password1', 'Re-type Password', 'trim|required|xss_clean');
        if ($this->form_validation->run() == FALSE) {
            $this->load->view('registration_view');
        } else {

            $pass = $this->input->post('password');
            $pass1 = $this->input->post('password1');
            if($pass!=$pass1){

                $data['message_display'] = 'Password mismatched!';
            }else{
                $data = array(
                'Fname' => $this->input->post('Fname'),
                'Lname' => $this->input->post('Lname'),
                'Gender' => $this->input->post('Gender'),
                'Address' => $this->input->post('Address'),
                'EmailAdd' => $this->input->post('EmailAdd'),
                'username' => $this->input->post('username'),
                'password' => $this->input->post('password')
                );
            }

        }
     }
}

registration_view

<?php echo form_open('login/user_registration_process'); ?>
<div class="content-box-wrapper">
        <div class="form-group">
             <div class="input-group">
                   <input type="text" class="form-control" name="fname" placeholder="First Name" >
              </div>
        </div>
        <div class="form-group">
             <div class="input-group">
                   <input type="text" class="form-control" name="lname" placeholder="Last Name" >
              </div>
        </div>
        <div class="form-group">
             <div class="input-group">
                  <select class="form-control" name="gender" >
                        <option disabled="disabled">Gender</option>
                        <option value="Male">Male</option>
                        <option value="Female">Female</option>
                   </select>
              </div>
         </div>
         <div class="form-group">
              <div class="input-group">
                   <input type="text" class="form-control" name="address" placeholder="Address">
              </div>
          </div>
          <div class="form-group">
               <div class="input-group">
                    <input type="email" class="form-control" name="emailadd" placeholder="Email Address" >
                </div>
           </div>
           <div class="form-group">
                <div class="input-group">
                     <input type="text" class="form-control" name="username" placeholder="Username" >          
                 </div>
            </div>
            <div class="form-group">
                 <div class="input-group">
                      <input type="password" class="form-control" name="password" placeholder="Password" >
                  </div>
             </div>
             <div class="form-group">
                  <div class="input-group">
                       <input type="password" class="form-control" name="password1" placeholder="Re-type Password" >
                  </div>
              </div>
              <input type="submit" class="btn btn-blue-alt btn-block" value="Register"/>        
</div>
<?php echo form_close(); ?>

我正在使用codeigniter 3.1.3。任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:4)

由于在所有字段中使用xss clean check,您的表单验证失败。如果你删除它验证你的字段。由于你的数据已经xss清理(假设配置中global_xss_filtering为TRUE)

答案 1 :(得分:0)

我认为在使用<div class="col-md-10"> <div class="version-tabs"> <tabset> <tab ng-repeat="data in dataDict.versions" heading="{{data}}" active="dataDict.versionSelection[data].active"> <div class="pad-top-sm"> <pre class="response-textarea-tab pad-top-sm">{{formatJson(dataDict.versionSelection[data].json) | json}}</pre> </div> </tab> </tabset> </div> </div> 获取值时,字段名称不匹配。请尝试这样..

$this->input->post()

答案 2 :(得分:0)

请检查控制器中的所有错误。这将返回错误原因。

<?php echo validation_errors(); ?>

OR

 echo "<pre>";

    print_r($this->form_validation->get_all_errors());

    echo "</pre>";

这将在控制器中返回所有表单错误,您可以轻松处理您的请求。

答案 3 :(得分:0)

在先生@GauravRai的帮助和先生@Hek-mat先生的建议下,这是我的代码。

登录控制器

function __construct()
     {
       parent::__construct();
       $this->load->helper(array('url','form'));
       $this->load->library('form_validation');
       $this->load->library('session');
       $this->load->helper('security');
       $this->load->model('user');
     }

     function index()
     {
        $this->load->view('login_view');
     }

     function user_registration_show(){

        $this->load->view('registration_view');

     }

    function user_registration_process(){

        $this->form_validation->set_rules('fname', 'First Name', 'required|xss_clean');
        $this->form_validation->set_rules('lname', 'Last Name', 'required|xss_clean');
        $this->form_validation->set_rules('gender', 'Gender', 'required|xss_clean');
        $this->form_validation->set_rules('address', 'Address', 'required|xss_clean');
        $this->form_validation->set_rules('emailadd', 'Email Address', 'required|xss_clean');
        $this->form_validation->set_rules('username', 'Username', 'required|xss_clean');
        $this->form_validation->set_rules('password', 'Password', 'required|xss_clean');
        $this->form_validation->set_rules('password1', 'Re-type Password', 'required|xss_clean|matches[password]');
        if ($this->form_validation->run() == FALSE) {
            $this->load->view('registration_view');
        } else {


                $data = array(
                'Fname' => $this->input->post('fname'),
                'Lname' => $this->input->post('lname'),
                'Gender' => $this->input->post('gender'),
                'Address' => $this->input->post('address'),
                'EmailAdd' => $this->input->post('emailadd'),
                'username' => $this->input->post('username'),
                'password' => MD5($this->input->post('password'))
              );

            $result = $this->user->registration_insert($data);

            if($result){

                $data['message_display'] = 'Registered Successfully! Please Login to your account.';
                $this->load->view('login_view', $data);
            }else{

                $data['message_display'] = 'Username already exist!';
                $this->load->view('registration_view', $data);
            }

        }
     }

我添加了$this->load->helper('security');,以便xss_clean验证我的表单。我还添加了matches[password]验证,以匹配我的password字段和Re-type Password字段。感谢大家帮助我解决这个问题:)