使用模态的codeigniter表单登录验证

时间:2017-05-25 19:21:39

标签: php jquery codeigniter

我有一个正确验证的登录模式表单,但我遇到一个小问题,即它在登录模式上返回false语句,例如无效的用户名或密码。而作为回应我看到输入错误的密码和所有HTML。但是没有信息在表格上打印。

这是我的观点:

<a href="#" data-toggle="modal" data-target="#loginmodel">Sign In / Order</a>&nbsp; | &nbsp;

<div class="modal fade" id="loginmodel" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel">
         <div class="modal-dialog" role="document">
            <div class="modal-content martop105">
               <div class="modal-header">
                  <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                  <h4 class="modal-title text_center"  id="exampleModalLabel">Login</h4>
               </div>
               <div class="modal-body">
                  <form >
                     <div class="row margin0 text_center">
                        <div class="  col-md-12 col-sm-12 col-xs-12" >  
                           <input type="email" id="email" placeholder="Email*" class="form-control">
                        </div>
                        <br>
                        <div class="col-md-12 col-sm-12 col-xs-12 martop20">
                           <input type="Password" id="password" placeholder="Password*" class="form-control">
                        </div>
                        <br>
                        <div class="checkbox col-md-12 col-sm-12 col-xs-12 pull-left martop20" >
                           <label class="pull-left"><input name="remember" type="checkbox" value="Remember Me"> Remember Me</label>
                        </div>
                        <div class=" col-md-12 col-sm-12 col-xs-12 pull-left text_blue martop20" >
                           <a href="#" class="text_blue pull-left">
                           Forgot password?
                           </a>    
                        </div>
                     </div>
                     <br>
                     <div class="row margin0  ">
                        <button type="button" onclick="save();" class="btn btn-info btn-lg marleft20 active">Login</button>
                     </div>
                  </form>
               </div>
               <div class="modal-footer">
               </div>
            </div>
         </div>
      </div>

<script>
function save(){
// alert('ddsfsf');
    var email=$('#email').val();
    var password=$('#password').val();
    // alert(email);
    //alert(gender);

     $.ajax({
        url: '<?php echo base_url();?>Choice/login',
        type: 'POST',
        data: {
            email: email,
            password:password

        },
        dataType: 'text',
        success: function(data) {
             // console.log(data);
            // alert(data);
            // alert("Succesfully Saved");
        //  location.reload(false);
        }
    }); 
}

</script>

控制器

class Choice extends CI_Controller {
 function __construct(){
        parent::__construct();
         $this->load->library('form_validation');
        $this->load->helper('form');

        $this->load->database();
         $this->load->model('login_model','login_model');

        $this->load->library('session');
        $this->load->library('eway');

        $this->load->model('Catering_model','catering_model');

        // $this->load->helper('utility');
        $this->load->helper('url');


    }

public function login()
    {
        $this->form_validation->set_rules('email','Email','required|valid_email|is_unique[choicelunchuser.email]');
        $this->form_validation->set_rules('password','Password','required|callback_basisdata_cek');

        if($this->form_validation->run()==false)
        {
            $this->load->view('ChoiceLaunch/index');
        }
        else{
            if($this->session->userdata('logged_in'))
            {

                $session_data = $this->session->userdata('logged_in');
                $data['id'] = $session_data['id'];

                $data['email'] = $session_data['email'];

                $this->load->view('ChoiceLaunch/index',$data);
            }
            else{
                $this->load->view('ChoiceLaunch/index');
            }
        }


    }

public function basisdata_cek()
    {

        $username= $this->input->post('email');
        $password=$this->input->post('password');

        // echo $username.' '.$password;

        $result=$this->login_model->loginemail($username,$password);
        // echo ('fsf'.$result[0]);
        // echo ('fsf'.$result[1]);
        if($result)
        {
            $sess_array = array();
            foreach ($result as $row)
            {
                $sess_array = $arrayName = array('id' => $row->id,'email'=> $row->email);
                $this->session->set_userdata('logged_in',$sess_array);

            //  $ci = & get_instance();
                //$ci->session->set_userdata("logged_in",$sess_array);
            }
            return true;
        }
        else{

            //echo $username.' '.$password;
            $this->form_validation->set_message('basisdata_cek','Invalid user or password');
            return false;
        }
    }   
}

为了说明,请看pic: enter image description here

3 个答案:

答案 0 :(得分:0)

您应该在视图中添加<?php echo validation_errors(); ?>

答案 1 :(得分:0)

您可以使用闪存数据打印错误消息。在您的控制器中

更改

else{
            $this->load->view('ChoiceLaunch/index');
        }

else{
$this->session->set_flashdata('yes', 'Invalid username or password');

redirect('ChoiceLaunch/index');

}

在登录视图页面中添加

<?php if($this->session->flashdata('yes')){ ?>
<span style="color:red;"><?php echo $this->session->flashdata('yes'); ?></span>

<?php } ?>

您应该加载库会话。

 $this->load->library('session');

答案 2 :(得分:0)

确保在config.php中设置了基本网址

$config['base_url'] = 'http://localhost/projectname/';

dataType to json

function save(){
    var email=$('#email').val();
    var password=$('#password').val();

     $.ajax({
        url: "<?php echo base_url('choice/login');?>",
        type: 'POST',
        data: {
            email: email,
            password:password
        },
        dataType: 'json',
        success: function(data) {
            if ($data['success'] == false) {
                // $('#somediv').text($data['error']);
                $('#somediv').html($data['error']);
            }

            if ($data['success'] == true) {
                alert('yes')
            }
        }
    }); 
}

控制器

public function login() {
    $data = array();

    $this->form_validation->set_rules('email','Email','required|valid_email|is_unique[choicelunchuser.email]');
    $this->form_validation->set_rules('password','Password','required|callback_basisdata_cek');

    if ($this->form_validation->run() == false) {

        $data['success'] = false;

        $data['error'] = validation_errors();

    } else {

        // Set the session data

        $data['success'] = true;


    }

    echo json_encode($data);
}
  

然后你需要创建另一个ajax函数,所以当点击登录按钮加载模型时会显示它。

相关问题