2017-05-25 28 views
1

我有一個登錄模式窗體,這是正確的驗證,但我有一個小問題,它是nt返回虛假陳述登錄模式,如無效的用戶或密碼。而在迴應中,我看到錯誤的密碼輸入和所有的HTML。但是沒有消息在窗體上打印。codeigniter表單登錄驗證使用模式

這裏是我的看法:

<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; 
     } 
    } 
} 

爲了說明請儘快圖: enter image description here

回答

0

您應該添加<?php echo validation_errors(); ?>到您的視圖

+0

<?php echo validation_errors(); ?> – Alish

+0

我放置bt仍然顯示響應不佈局。我有什麼想法嗎? – user3162878

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 } ?> 

您應該加載庫會話。在config.php

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

plz eloborate more more where shd我放置 <?php if($ this-> session-> flashdata('yes')){?> <?php echo $ this- >會話級> flashdata( '是'); ?> 和 $這個 - >負載>庫( '會議');? – user3162878

+0

我將<?php if($ this-> session-> flashdata('yes')){?> <?php echo $ this-> session-> flashdata( '是'); ?> 查看頁面頂部bt我沒有看到 – user3162878

+0

添加$ this-> load-> library('session');在你的控制器中。 –

0

確保選中已設置基本URL

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

數據類型爲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函數,所以當點擊登錄按鈕加載模型將顯示它。

+0

thanx答覆...我仍然試圖得到vaidation錯誤消息 – user3162878

+0

它是不斷地說電子郵件字段必須包含一個唯一的值? – user3162878