2012-03-14 30 views
0

嘿即時嘗試編寫代碼的登錄系統,這是我第一次,我用了一個在線教程。最初的Javascript工作正常,輸入空白時顯示錯誤。但是,當我在輸入中輸入文本並單擊登錄時,沒有任何反應。在我看來,它不是調用PHP文件,但我看不到任何理由,因爲它被正確引用?任何幫助將不勝感激!我的登錄jquery沒有正確地調用php文件

<?php 
    include ("Includes/dbConnect.php"); 
    $u=$_POST['u']; 
    $p=$_POST['p']; 

    //Strip slashes 
    $u = stripslashes($u); 
    $p = stripslashes($p); 

    //Strip tags 
    $u = strip_tags($u); 
    $p = strip_tags($p); 


    $check = mysqli_query("SELECT * FROM Login WHERE login_user ='$u' AND login_pass='$p'")  or die(mysqli_error()); 
    $check = mysqli_num_rows($check); 
    if($check !=="0"){ 
    $results = mysqli_query("SELECT * FROM Login WHERE login_user = '$u'") or die(mysqli_error()); 
     while ($row = mysqli_fetch_assoc($results)) { 
      $login_user=$row['login_user']; 
      session_register('login_user'); 
      $_SESSION['login_user'] = $Login_user; 
      echo "1"; 
    } 
    } 
?> 

,這裏是JavaScript的

<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".sign_b_btn").live("click", function() { 
      var u = $("#u").val(); 
      var p = $("#p").val(); 

      if (u == "") { 
       $("#u").css("border-color", "red"); 
       $("#un").css("color", "red"); 
       $(".error").show().html("Please enter your username!"); 
       $("#p").css("border-color", "#606060"); 
       $("#up").css("color", "#333333"); 
      } else if (p == "") { 
       $("#u").css("border-color", "#606060"); 
       $("#un").css("color", "#606060"); 
       $(".error").show().html("Please enter your Password!"); 
       $("#p").css("border-color", "red"); 
       $("#up").css("color", "red"); 
      } else { 

       dataString = 'u=' + u + '&p=' + p; 
       $.ajax({ 
        type: "POST", 
        url: "Ajax/login_php.php", 
        data: dataString, 
        cache: false, 
        success: function (html) { 
         if (html == "") { 
          $(".error").show().html("The username or password you entered is incorrect!"); 
          $("#p,#u").css("border-color", "red"); 
          $("#up,#un").css("color", "red"); 
         } else if (html == "1") { 
          $(".error").fadeOut(1000); 
          $("#u").css("border-color", "#606060"); 
          $("#un").css("color", "#333333"); 
          $("#p").css("border-color", "#606060"); 
          $("#up").css("color", "#333333"); 
          $(".center").animate({ 
           opacity: 0.25, 
           left: '+=900', 
           height: 'toggle' 
          }, 5000, function() { 
           $(".done").slideDown(200).html("Welcome " + u); 
           setTimeout(function() { 
            var u = $("#u").val(""); 
            var p = $("#p").val(""); 
            window.location = "index.php"; 
           }, 5000); 
          }); 
         } 
        } 
       }); 
      } 
     }); 
    }); 
</script> 
+0

你看了看控制檯,看看是否有任何錯誤?或者在您的瀏覽器工具中檢查網絡活動,以查看是否正在創建HTTP請求以及它返回的內容?你沒有錯誤回調,所以如果有錯誤,什麼都不會發生。 – 2012-03-14 14:54:35

+0

我從這裏看不到任何明顯的問題,但知道網站上發生了什麼會很有幫助。 Ajax調用發生時,服務器是否收到404或500響應?任何JS錯誤? (您應該能夠通過Chrome的網絡和控制檯標籤查看這些信息。)如果有效,服務器返回什麼內容? **編輯**:對不起,傑森 - 寫得太慢...... – meloncholy 2012-03-14 14:59:43

+0

去http://www.php-login-script.com並下載腳本(免費)。它也使用js來驗證。你可以**檢查**。 – 2012-03-14 15:07:36

回答

0

回答您的問題會話:

編輯你的PHP代碼,使你的腳本開始了與調用在session_start();

如:

<?php session_start(); 
//rest of your php code 

更換線路:

session_register('login_user'); 
$_SESSION['login_user'] = $Login_user; 

有:

$_SESSION['login_user'] = $Login_user; 

你都拿到你,因爲函數了session_register提到的錯誤();已在PHP 5.3.0版中被棄用,並從PHP版本5.4.0中刪除。 $ _SESSION是在session_start()之後爲您提供的全局數組。呼叫。

快樂編程:)

0

感謝您的幫助球員,真的幫我弄明白了。完成代碼,如果任何人感興趣:

<?php 

include ("../Includes/dbConnect.php"); 
$u=$_POST['u']; 
$p=$_POST['p']; 

//Strip slashes 
$u = stripslashes($u); 
$p = stripslashes($p); 

//Strip tags 
$u = strip_tags($u); 
$p = strip_tags($p); 



$query = "SELECT * FROM Login WHERE login_user ='$u' AND login_pass='$p'"; 
$check = mysqli_query($cxn,$query) or die("Couldn't execute query!"); 
$check = mysqli_num_rows($check); 
if($check !=="0"){ 
$results = mysqli_query($cxn,"SELECT * FROM Login WHERE login_user = '$u' AND login_pass='$p'") or die("Couldn't execute query2!"); 
    while ($row = mysqli_fetch_assoc($results)) { 
     $username= $u; 
     session_register('Login'); 
     $_SESSION['user'] = $username; 
     echo "1"; 
} 
} 


?> 
+0

在將查詢插入查詢之前,您應該先將您的變量'$ u'和'$ p'轉義出來。原因是有人可以通過SQL注入訪問任何帳戶。假設我發送用戶'admin'和密碼''或''='',你的SQL查詢將變成'SELECT * FROM Login WHERE login_user ='admin'AND login_pass =''或''='''。假設你有一個名爲'admin'的用戶,我甚至可以在不知道密碼的情況下訪問這個帳戶。 – Maxime 2012-03-21 13:23:51