试图读取google和堆栈中的所有网页和文档,但仍然无法解决问题。

我尝试对注册表单进行简单的数据验证,结果显示在按提交以新表单显示错误消息后,在原始表单下方显示了另一种表单。

我是该语言的新手,所以如果我附加的代码或信息不足,请告知我。

控制器帐户:

<?php
class Account extends MY_Controller {
    public function __construct() {
        parent::__construct();
        session_start();
        $this->load->model('user');
        $this->load->helper(array('form','url','html'));
        $this->load->library('session');
        $this->load->library('form_validation');

    }

    public function registration() {
        $data = $this->user->users_info();
        $this->load->view('account/registration',$data);
        $this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[20]');
        $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
        $this->form_validation->set_rules('password', 'Password ', 'required|matches[passconf]|min_length[5]');
        $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');

        if($this->input->post('submit')) {
            $username= $this->input->post('username');
            $email= $this->input->post('email');
            $query_u= $this->user->retrieve_by_username($username);
            $query_e= $this->user->retrieve_by_email($email);
            if ($this->form_validation->run() == FALSE){
                $this->load->view('account/registration',$data); ←---------------- (I think this is wrong, it makes load the second form out.)
            }
            else{
                if(!empty($query_u) or !empty($query_e)) {
                    redirect('account/registrat');
                }
                else {
                    $data = array(
                    'username'=>$this->input->post('username'),
                    'email'=>$this->input->post('email'),
                    'password'=>$this->input->post('password'),
                    'is_admin'=>0,
                    );
                    $this->user->create_user($data);
                    redirect('/account/login');
                }
            }
        }
    }


查看Registration.php

<center>
<?php echo form_open_multipart('account/registration'); ?>
<h5><?php echo $b_username;?> &nbsp;(Minimum 5 characters)</h5>
<input type="text" name="username" id="username" value="<?php echo set_value('username'); ?>" size="50" /><?php echo form_error('username'); ?>
<h5><?php echo $b_email;?></h5>
<input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" />
<?php echo form_error('email'); ?>
<h5><?php echo $b_password;?> &nbsp;(Minimum 5 characters)</h5>
<input type="text" name="password" value="<?php echo set_value('password'); ?>" size="50" />
<?php echo form_error('password'); ?>
<h5><?php echo $b_passconf;?></h5>
<input type="text" name="passconf" value="" size="50" />
<?php echo form_error('passconf'); ?>
<h5></h5>
<div><?php echo form_submit('submit', 'Submit') ?></div>
</center>


模型user.php

<?php
class User extends CI_Model {
    function __construct() {
        parent::__construct();
        $this->load->database();
    }
    function users_info() {
        $data['b_id']    =  'id';
        $data['b_username'] = 'Username';
        $data['b_email'] = 'Email';
        $data['b_password'] =    'Password';
        $data['b_passconf'] =    'Enter Password Again';
        $data['b_is_admin'] = 'Is_admin';
        $data['b_default_privacy'] = 'Default_privacy';
        $data['b_first_name'] = 'First_Name';
        $data['b_last_name'] = 'Last_Name';
        $data['b_gender'] = 'Gender';
        $data['b_birthday'] = 'Birthday';
        $data['b_friend_id'] = 'Friend_id';
        $data['b_weight'] = 'Weight';
        $data['b_height'] = 'Height';
        $data['b_daily_cal_intake'] = 'Daily_calorie_intake';
        $data['b_target_weight'] = 'Target_weight';
        $data['b_regional_id'] = 'Region';
        $data['b_profile_pic'] = 'Profile Picture';
        return $data;
    }
    function retrieve_by_username($username) {
        $query = $this->db->get_where('001_users',array('username'=>$username));
        return $query->row_array();
    }
    function retrieve_by_email($email) {
        $query = $this->db->get_where('001_users', array('email'=>$email));
        return $query->row_array();
    }

最佳答案

将功能更改为此,然后尝试..

public function registration()
{

    $this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[20]');
    $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
    $this->form_validation->set_rules('password', 'Password ', 'required|matches[passconf]|min_length[5]');
    $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');

    if ($this->form_validation->run() == false) // if validation fails for first time and every time when ever condtion is not satisified
    {
        $data = $this->user->users_info();
        $this->load->view('account/registration',$data);
    }
    else
    {
        $username= $this->input->post('username');
        $email= $this->input->post('email');
        $query_u= $this->user->retrieve_by_username($username);
        $query_e= $this->user->retrieve_by_email($email);

        if(!empty($query_u) or !empty($query_e)) {
            redirect('account/registrat');
        }
        else {
            $data = array(
                'username'=>$this->input->post('username'),
                'email'=>$this->input->post('email'),
                'password'=>$this->input->post('password'),
                'is_admin'=>0
            );
            $this->user->create_user($data);
            // send sucess msg here
            redirect('/account/login');
        }

    }
}

10-07 20:09
查看更多