页面重用Codeigniter重定向表单时

时间:2018-08-10 02:30:49

标签: codeigniter

我正在学习使用Codeigniter 3.1.8进行开发,因为我遇到了一个问题:我遇到了一个问题:我在空白页中被重定向,并且不会显示错误。请帮忙

这是插入模型的功能

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class M_root extends CI_Model{



    function isertion_root(){
        $root=array(
            'nom_admin'=>'$user_name',
            'prenom_admin'=>'$user_prenom',
            'email_admin'=>'$user_email',
            'date_nais_admin'=>'$date_nais',
            'date_inscription_admin'=>'NOW(),false',
            'avatar_root'=>'$avatar_root',
            'password_root'=>'$pssword_root'

        );
        $this->db->insert('root', $root);
    }

    /**
     * @param $email
     * @param $password
     * @return bool
     */
    function login_root($email,$password){

        $this->db->select('*');
        $this->db->from('root');
        $this->db->where('email_admin',$email);
        $this->db->where('password_root',$password);

        if ($query=$this->db->get())
        {
            return $query->row_array();
        }
        else{
            return false;
        }
    }

    public function email_check($email_admin){

        $this->db->select('*');
        $this->db->from('root');
        $this->db->where('email_admin',$email_admin);
        $query=$this->db->get();

        if($query->num_rows()>0){
            return false;
        }else{
            return true;
        }

    }


}

这是插入控制器的功能

class Root extends CI_Controller{

    function __construct(){
        parent:: __construct();
        $this->load->database();
        $this->load->model('M_root');
        $this->load->library('upload');
        $this->load->library('form_validation');
        $this->load->helper(array('form', 'url'));
        $this->load->library('session');

    }

    public function index()
       {
        $this->load->view("register.php");
        }

        //debut fonction d'enregistrement

        public function isertion_root(){
            if($this->input->post('registersubmit')){

            $config['upload_path']          = './assets/avatar-root/';
            $config['allowed_types']        = 'gif|jpg|png';
            $config['max_size']             = 100;
            $config['max_width']            = 1024;
            $config['max_height']           = 768;
            $this->upload->initialize($config);
            if(!empty($_FILES['filefoto']['name']))
            {
                if ($this->upload->do_upload('filefoto'))
                {
                    $gbr = $this->upload->data();
                    //Compress Image
                    $config['image_library']='gd2';
                    $config['source_image']='./assets/avatar-root/'.$gbr['file_name'];
                    $config['create_thumb']= FALSE;
                    $config['maintain_ratio']= FALSE;
                    $config['quality']= '60%';
                    $config['new_image']= './assets/avatar-root/'.$gbr['file_name'];
                    $this->load->library('image_lib', $config);
                    $this->image_lib->resize();


                    $this->form_validation->set_rules('nom_admin', 'nom administrateur', 'trim|required|min_length[3]|max_length[23]|alpha_dash|encode_php_tags|xss_clean');
                    $this->form_validation->set_rules('prenom_admin', 'prenom administrateur', 'trim|required|alpha_dash|encode_php_tags|xss_clean');
                    $this->form_validation->set_rules('email_admin', 'Email administrateur', 'trim|required|valid_email|xss_clean');
                    $this->form_validation->set_rules('date_nais_admin', 'Date de naissance administateur', 'trim|required');
                    $this->form_validation->set_rules('avatar_root', 'Avatar root', 'trim|required');
                    $this->form_validation->set_rules('password_root', 'password root', 'trim|required|min_length[8]|xss_clean');
                    $this->form_validation->set_rules('conf_password', 'confirm password', 'trim|required|matches[password]');

                        $root = array(
                            'nom_admin' => strip_tags($this->input->post('nom_admin')),
                            'prenom_admin' => strip_tags($this->input->post('prenom_admin')),
                            'email_admin' => strip_tags($this->input->post('email_admin')),
                            'date_nais_admin' => strip_tags($this->input->post('date_nais_admin')),
                            'avatar_root' => strip_tags($this->input->post('avatar_root')),
                            'password_root' => password_hash($this->input->post('password'),PASSWORD_DEFAULT)


                        );
                        print_r($root);
                        if ($this->form_validation->run() == TRUE)
                    {

                        $email_check=$this->M_root->email_check($root['email_admin']);

                       if($email_check){
                               $this->M_root->isertion_root($root);
                                $this->session->set_flashdata('success_msg', 'Registered successfully.Now login to your account.');
                        redirect('root/login_view');

                                   }
                    }
                                     else{

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


                                }

            }

        }
        }

    }
//fin fonction d'enregistrement

视图

<span style="background-color:red;">
  <div class="container">
      <div class="row">
          <div class="col-md-4 col-md-offset-4">
              <div class="login-panel panel panel-success">
                  <div class="panel-heading">
                      <h3 class="panel-title">Creation d'un compte</h3>
                  </div>
                  <div class="panel-body">

                  <p class="alert-danger"><?php
                  $error_msg=$this->session->flashdata('error_msg');
                  if($error_msg){
                    echo $error_msg;
                  }
                   ?></p>
                     <?php echo validation_errors(); ?>
                      <form role="form" method="post" enctype="multipart/form-data" autocomplete="off" action="<?php echo base_url().'Root/isertion_root'?>">
                          <fieldset>
                              <div class="form-group">
                                <?php echo form_error('nom_admin'); ?>
                                  <input class="form-control" placeholder="Votre nom" name="nom_admin" value="<?php echo set_value('nom_admin'); ?>"type="text" autofocus>
                              </div>

                               <div class="form-group">
                                  <input class="form-control" placeholder="Votre prenom" name="prenom_admin" type="text" autofocus>
                              </div>

                              <div class="form-group">
                                  <input class="form-control" placeholder="E-mail" name="email_admin" type="email" autofocus>
                              </div>
                              <div class="form-group">

                              <div class="form-group">
                                  <input class="form-control" placeholder="votre date de naissance" name="date_nais_admin" type="date" value="">
                              </div>

                               <div class="form-group">
                                  <input class="form-control" placeholder="mot de passe " name="password_root" type="password" value="">
                              </div>

                                  <div class="form-group">
                                  <input class="form-control" placeholder="confirmez votre mot de passe" name="conf_password" type="password" value="">
                              </div>

                              <div class="form-group">
                                  <input class="form-control" placeholder="votre photo" name="avatar_root" type="file" value="">
                              </div>

                              <input class="btn btn-lg btn-success btn-block" type="submit" value="Register" name="registersubmit" >

                          </fieldset>
                      </form>
                      <center><b>Already registered ?</b> <br></b><a href="<?php echo base_url('root/login_view'); ?>">Login here</a></center><!--for centered text-->
                  </div>
              </div>
          </div>
      </div>
  </div>





</span>

2 个答案:

答案 0 :(得分:0)

您的原始代码包含许多if和no else。这意味着,如果if条件的值为假,则没有理由显示任何内容。

这是一种更好的方法。如果您将所有内容全部保留在一个函数中,并且避免了重定向,则可以在表单验证或图像上传出现错误时正确地重新填充输入字段。

public function index() {
    if ($this->input->post('registersubmit')) {
        $this->form_validation->set_rules('nom_admin', 'nom administrateur', 'trim|required|min_length[3]|max_length[23]|alpha_dash|encode_php_tags|xss_clean');
        $this->form_validation->set_rules('prenom_admin', 'prenom administrateur', 'trim|required|alpha_dash|encode_php_tags|xss_clean');
        $this->form_validation->set_rules('email_admin', 'Email administrateur', 'trim|required|valid_email|xss_clean');
        $this->form_validation->set_rules('date_nais_admin', 'Date de naissance administateur', 'trim|required');
        $this->form_validation->set_rules('avatar_root', 'Avatar root', 'trim|required');
        $this->form_validation->set_rules('password_root', 'password root', 'trim|required|min_length[8]|xss_clean');
        $this->form_validation->set_rules('conf_password', 'confirm password', 'trim|required|matches[password]');
        if ($this->form_validation->run()) {
            $this->load->library('upload');
            $config['upload_path'] = './assets/avatar-root/';
            $config['allowed_types'] = 'gif|jpg|png';
            $config['max_size'] = 100;
            $config['max_width'] = 1024;
            $config['max_height'] = 768;
            $this->upload->initialize($config);
            if ($this->upload->do_upload('filefoto')) {
                $gbr = $this->upload->data();
                //Compress Image
                $config['image_library'] = 'gd2';
                $config['source_image'] = './assets/avatar-root/' . $gbr['file_name'];
                $config['create_thumb'] = FALSE;
                $config['maintain_ratio'] = FALSE;
                $config['quality'] = '60%';
                $config['new_image'] = './assets/avatar-root/' . $gbr['file_name'];
                $this->load->library('image_lib', $config);
                $this->image_lib->resize();
                $root = array(
                    'nom_admin' => strip_tags($this->input->post('nom_admin')),
                    'prenom_admin' => strip_tags($this->input->post('prenom_admin')),
                    'email_admin' => strip_tags($this->input->post('email_admin')),
                    'date_nais_admin' => strip_tags($this->input->post('date_nais_admin')),
                    'avatar_root' => strip_tags($this->input->post('avatar_root')),
                    'password_root' => password_hash($this->input->post('password'), PASSWORD_DEFAULT)
                );
                // i have a feeling you are checking if an email already exists here
                // you can use form validations is_unique function in the rules above and forgo this
                if ($this->M_root->email_check($root['email_admin'])) {
                    $this->M_root->isertion_root($root);
                    $this->session->set_flashdata('success_msg', 'Registered successfully.Now login to your account.');
                    redirect('root/login_view');
                } else {
                    $this->session->set_flashdata('error_msg', 'bad email');
                }
            } else {
                $this->session->set_flashdata('error_msg', $this->upload->display_errors());
            }
        }
    }
    $this->load->view("register.php");
}

您只需要将表单操作更改为空白即可将其提交到同一页面。

在每个输入value中,除密码外,您还应执行以下操作:

<input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" />

这样,当用户由于输入错误的信息或其他原因而发生自然错误时,用户将不会丢失其输入。

答案 1 :(得分:0)

一旦遇到同样的问题,使用此问题纠正后,请尝试此操作。

ini_set('display_errors', 1);