2013-09-01 47 views
0

我試圖通過AJAX送我用戶名密碼到數據庫進行驗證用戶,但我看到的CI是創造了一個請求重複的會議。另外當我試圖設置userdatasession->set_userdata它不設置數據。這被證實是因爲螢火蟲和我的會話數據庫都沒有顯示數據。此外,由於會議中沒有設置任何數據,因此我沒有收到AJAX響應中顯示的任何迴應以顯示AJAX響應成功笨會話不保存用戶數據,並創建重複會議

請指導我在做什麼錯誤,因爲會話cookie被創建,即使用戶名密碼組合錯誤。

型號:

function validate_login() 
{ 
    $this->db->where('Useremail',$this->input->post('username')); 
    $this->db->where('Password',$this->input->post('password')); 
    $result = $this->db->get('users'); 
    if ($result->num_rows == 1) { 
     return true; 
    }else{ 
     return false; 
    } 
} 

控制器:

function validate_login_user() 
{ 
    $this->load->model('data_model'); 

    if ($this->data_model->validate_login()) 
    { 
     $data = array (
      'username' => $this->input->post('username'), 
      'is_logged_in' => true 
     ); 
     $this->session->set_userdata($data); 
     return = $this->session->userdata('username'); 
    } 
    else 
    { 
     return false; 
    } 
} 

我的觀點:

<script> 

    $(function() { 

     $('.login').click(function(){ 
      var username = $('#username').attr('value'); 
      var password = $('#password').attr('value'); 
      if (username == "" || password == ""){ 
       $('.LoginErrormsg').css('display','block'); 
      } 
      if (username !== "" && password !== ""){ 
       $.ajax({ 
        url:"<?php echo site_url('home/validate_login_user');?>", 
        type:'POST', 
        data:{username:username, 
         password:password}, 
        success:function(){ 
         $('#sitelogin').html(msg); 
         $('.logout').css('display','block'); 
        } 
       }); 
       return false 
      }else{ 
       return false; 
      } 
     }); 
    }) 

</script> 

<div id="sitelogin"> 
    <input type="text" class="loginbox" name = "login_username" id = "username" placeholder="Email address/Username" /> 
    <input type="password" class="loginbox" name = "login_password" id="password" placeholder="Password" /> 
    <div class="LoginErrormsg">You forgot to enter Username and Password</div> 
     <button class="login" name = "login">Login</button> 
     <button class="logout" name = "logout">Logout</button> 
    </div> 
</div> 

回答

1

你不能設置後立即獲取會話數據,笨的會議實際上是餅乾和其只有頁面重新加載..閱讀更多here

+0

我清除了所有的Cookie,然後點擊登錄按鈕,我立即找到會話cookie中的螢火蟲XHR控制檯設置。即使會話數據庫顯示會話使用重複的會話ID登錄。我很驚訝爲什麼我的會話數據沒有加載到會話cookie中。 將ajax請求發送到狀態爲200的確認腳本。最令人不安的事實是,即使證書未經驗證,會話也會被創建。 請幫助我! – Sanjit

0

要解決此問題您必須使用php或AJAX重新加載頁面

如果php在成功時可以使用redirect()。所以它不會回到AJAX。

如果AJAX使用window.location.replace("<?php echo base_url(); ?>index.php/controller/method");