2015-06-24 72 views
0

我有一個登錄頁面,其中我寫了JQuery代碼來發出ajax發佈請求,然後調用另一個php腳本來驗證用戶憑證。如果憑證正確,用戶將被重定向到php腳本本身的主頁。但是,當用戶給他的憑據,並點擊登錄,他不會被重定向,直到頁面重新加載。這是我面臨的奇怪問題。請幫我解決它。用戶沒有得到重定向,直到頁面刷新

這裏是我的jQuery代碼:

<script> 
      $(document).ready(function() { 
       $('#loginButton').click(function() 
       { 

        var username = $("#inputUsername").val();    
        var password = $("#inputPassword").val(); 
        var dataString = 'inputUsername=' + username + '&inputPassword=' + password; 
        if ($.trim(username).length > 0 && $.trim(password).length > 0) 
        { 
         $.ajax({ 
          type: "POST", 
          url: "ajaxLogin.php", 
          data: dataString, 
          cache: false, 
          beforeSend: function() { 
           $("#loginButton").val('Connecting...'); 
          }, 

         }); 
        } 
        return false; 
       }); 

      }); 
</script> 

這是HTML登錄表單

<form> 
        <div class="form-group center-block"> 
         <input type="text" class="form-control" id="inputUsername" placeholder="Username"> 
        </div> 
        <div class="form-group"> 
         <input type="password" class="form-control" id="inputPassword" placeholder="Password"> 
        </div> 
        <button type="submit" class="btn btn-login center-block" id="loginButton">Login</button> 
        <div id="error"></div> 
       </form> 

PHP代碼:

<?php 
include("db.php"); 
session_start(); 
$username=mysqli_real_escape_string($db,$_POST['inputUsername']); 
$password=mysqli_real_escape_string($db,$_POST['inputPassword']); 
$result=mysqli_query($db,"SELECT user_id FROM user_info WHERE username='".$username."' and password='".$password."'"); 
$count=mysqli_num_rows($result); 
$row=mysqli_fetch_array($result,MYSQLI_ASSOC); 
// If result matched $username and $password, table row must be 1 row 
if($count==1) 
{ 
$_SESSION['login_user']=$row['user_id']; //Storing user session value. 
header('Location: home.html'); 
} 
?> 

在此先感謝

+0

您的PHP代碼是從AJAX請求中調用的,所以重定向發送到該回復,而不是頁面本身 – JohnKiller

+0

也,您在db中存儲普通密碼,請參閱本指南:http://php.net /manual/en/faq.passwords.php – JohnKiller

+0

...以及如果有人在用戶或密碼字段中輸入「&」會怎樣?您的查詢字符串將中斷。使用'$ .post'並將數組傳遞給第二個參數 – JohnKiller

回答

0

在上PHP阿賈克斯請求時終止,您在PHP部分使用的echo,你會使用exit()方法echo取消後繼續頁面。

我對你的看法是,你用echo命令和exit()和使用成功方法在阿賈克斯驗證echo,如果驗證爲真與JavaScript重定向。

<script> 
     $(document).ready(function() { 
      $('#loginButton').click(function() 
      { 

       var username = $("#inputUsername").val();    
       var password = $("#inputPassword").val(); 
       var dataString = 'inputUsername=' + username + '&inputPassword=' + password; 
       if ($.trim(username).length > 0 && $.trim(password).length > 0) 
       { 
        $.ajax({ 
         type: "POST", 
         url: "ajaxLogin.php", 
         data: dataString, 
         cache: false, 
         success: function (data) 
          { 
           if (data == 1) { 
            window.location = "home.html"; 
          } 
         beforeSend: function() { 
          $("#loginButton").val('Connecting...'); 
         }, 

        }); 
       } else { 
        return false; 
       } 
      }); 

     }); 

您將這段代碼在PHP,如果您的驗證爲真:

echo 1; 
exit(); 

呼應1,返回1到成功方法的數據。

1

做你的頁面的重定向在$ .ajax中成功處理程序,而不是在PHP端。\

+0

根據用戶的類型,重定向的頁面將有所不同。因此我通過php重定向 –

相關問題