2013-11-01 22 views
1

我有一個使用JQuery和PHP驗證用戶名和密碼的登錄表單。我正嘗試從擴展mysql切換到mysqli以獲得更好的練習,並且遇到了很多麻煩。我認爲這個錯誤存在於JQuery中,因爲我已經測試了login.php驗證,並且它工作正常。使用PHP和JQuery驗證來自MySQL數據庫的登錄信息登錄表格

因此,這裏是我的代碼:

的index.php:

<!doctype html> 
<html> 
    <head> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 

     <script type="text/javascript"> 
      $(document).ready(function(){ 

       $("#login_a").click(function(){  
        $("#shadow").fadeIn("normal"); 
        $("#login_form").fadeIn("normal"); 
        $("#user_name").focus(); 
       }); 

       $("#cancel_hide").click(function(){ 
        $("#login_form").fadeOut("normal"); 
        $("#shadow").fadeOut(); 
       }); 

       $("#login").click(function(){ 

        var username=$('#user_name').val(); 
        var password=$('#password').val(); 

        $.ajax({ 
         type: "POST", 
         url: "login.php", 
         data: "name="+username+"&pwd="+password, 
         success: function(html){ 

          if(html=='true'){ 
           $("#login_form").fadeOut("normal"); 
           $("#shadow").fadeOut(); 
           $("#profile").html("<a href='logout.php' id='logout'>Logout</a>"); 
          } 
          else{ 
           $("#add_err").html("*Wrong username or password"); 
          } 
         }, 
         beforeSend:function(){ 
          $("#add_err").html("Loading...") 
         } 
        }); 
       return false; 
       }); 
      }); 
     </script> 

    </head> 

    <body> 
     <?php session_start(); ?> 
     <div id="profile"> 
      <?php if(isset($_SESSION['user_name'])){ ?> 
      <a href='logout_script_2.php' id='logout'>Logout</a> 
      <?php }else {?> 
      <a id="login_a" href="#">login</a> 
      <?php } ?> 
     </div> 

     <div id="login_form"> 
      <form action="login_script_2.php" method="POST"> 
       <label>User Name:</label> 
       <input type="text" id="user_name" name="user_name" /> 
       <label>Password:</label> 
       <input type="password" id="password" name="password" /> 
       <label></label><br/> 
       <input type="submit" id="login" value="Login" /> 
       <input type="button" id="cancel_hide" value="Cancel" /> 
      </form> 
     <div class="err" id="add_err"><br></div> 
     </div> 
     <div id="shadow" class="popup"></div> 
    </body> 
</html> 

的login.php

<?php 
    session_start(); 
    $con = mysqli_connect("localhost","root","PW","db") or die("Connection error: " . mysqli_error($con)); 

    if(isset($_POST['submit'])){ 
     $username = $_POST['name']; 
     $password = $_POST['pwd']; 

     $stmt = $con->prepare("SELECT * FROM tapp_login WHERE username = ? AND password = ? LIMIT 1"); 
     $stmt->bind_param('ss', $username, $password); 
     $stmt->execute(); 
     $stmt->bind_result($username, $password); 
     $stmt->store_result(); 
     if($stmt->num_rows == 1) 
     { 
      if($stmt->fetch()) 
      { 
       $_SESSION['Logged'] = 1; 
       $_SESSION['user_name'] = $username; 
       echo 'Access granted'; 
       exit(); 
      } 
     } 
     else { 
      echo "*Wrong username or password"; 
     } 
     $stmt->close(); 
    } 
    else { 

    } 
    $con->close(); 
?> 

logout.php

<?php 
    session_start(); 
    unset($_SESSION['user_name']); 
    header('Location: index.php'); 
?> 

所有運行的嘗試代碼給了我JQuer中的錯誤y驗證「*錯誤的用戶名或密碼」。先謝謝了!

回答

2

當用ajax登錄,你是不是張貼submit,所以這行

if(isset($_POST['submit'])){ 

是不正確的,以便您的代碼永遠不會執行。

要麼將​​其更改爲

if(isset($_POST['name'])){ 

或將其添加到您的AJAX發佈的數據

data: "submit=true&name="+username+"&pwd="+password, 
+0

感謝您的提示。我嘗試了兩種方法,仍然得到相同的錯誤。任何其他想法? – Rob

+0

你檢查了你的控制檯日誌,看看你的成功返回什麼 - 'html'? – Sean

+0

我不知道該怎麼做,請您詳細說明一下嗎? – Rob

0

AJAX是部分劃界案。確保你沒有使用提交按鈕或點擊功能中的return false;在底部觸發它。如果不是鏈接,我會使用<input type='button' id='login_a' />。另外,你沒有設置你的提交按鈕,就像@Sean說的,因爲它是AJAX。