2011-03-18 51 views
0

我有一個簡單的表格,以驗證如果用戶在db存在,並允許登錄到另一頁(是的,我刪除密碼驗證來簡化代碼,並且我測試而不通和該腳本始終顯示您的登錄無效)。誤差在登錄 - PHP/AJAX

數據庫:emprego,表:用戶,字段:ID,用戶名,電子郵件,通過

<script type="text/javascript" language="javascript"> 
$(document).ready(function() { 
    $("#login_form").submit(function() { 
     $("#msgbox").removeClass().addClass('messagebox').text('Validating....').fadeIn(1000); 
     $.post("ajax_login.php", { 
      name: $('#name').val(), 
     }, function (data) { 
      if (data == 'yes') { 
       $("#msgbox").fadeTo(200, 0.1, function() { 
        $(this).html('Logging in.....').addClass('messageboxok').fadeTo(900, 1, function() { 
         document.location = 'secure.php'; 
        }); 
       }); 
      } else { 
       $("#msgbox").fadeTo(200, 0.1, function() { 
        $(this).html('Your login is not valid').addClass('messageboxerror').fadeTo(900, 1); 
       }); 
      } 
     }); 
     return false; 
    }); 
}); 
</script> 
    </head> 
    <body> 
     <form method="post" action="" id="login_form"> 
        User Name : <input name="name" type="text" id="name"> 
       <div class="buttondiv"> 
        <input name="Submit" type="submit" id="submit" value="Login" style="margin-left:-10px; height:23px"> 
        <span id="msgbox" style="display:none"></span> 
       </div> 
     </form> 

文件:ajax_login.php

<?php 

include("includes/f_banco.php"); 
conecta(); 


$check = mysql_query("SELECT username FROM users WHERE username ='".mysql_real_escape_string($_POST['name'])."'")or die(mysql_error()); 
$row=mysql_fetch_array($check); 

if ($row['username'] == $_POST['name']) { 
    echo "yes"; 
    $_SESSION['name']=$row['username']; 
}else{echo "no";} 

?> 

編輯:更新的代碼

是什麼可能的原因?

+0

你爲什麼不使用'真'或'FALSE'? 'yes'和'no'只意味着你需要編寫更多的代碼。 – alex 2011-03-18 02:36:42

+0

好的,但問題不是這樣,對嗎?謝謝 – 2011-03-18 02:38:43

+0

問題是什麼?問題是什麼? – CallMeLaNN 2011-03-18 03:02:31

回答

1

我看到很多的問題

<?php 
//removed the # from the post 
$name = mysql_real_escape_string($_POST['name']); 
//whys this here? 
$row=mysql_fetch_array($check); 
//name cant be used (common mistake) 
$check = mysql_query("SELECT name FROM users WHERE name ='".$name."'")or die(mysql_error()); 
$check2 = mysql_num_rows($check); 
if ($check2 == 1) { 
    echo "yes"; 
    $_SESSION['name']=$name; 
} 

else 
echo "no"; 
?> 

嘗試這樣的事情

<?php 
session_start(); 
include("includes/f_banco.php"); 
conecta(); 

if(isset($_SESSION['name'])){echo "yes";}else{ 
    $check = mysql_query("SELECT username FROM users WHERE username ='".mysql_real_escape_string($_POST['name'])."' LIMIT 1")or die(mysql_error()); 
    $row=mysql_fetch_array($check); 

    if ($row['username'] == $_POST['name']) { 
     echo "yes"; 
     $_SESSION['name']=$row['username']; 
    }else{echo "no";} 
} 


?> 
+0

我只是複製你的代碼,將bd中字段的名稱更改爲用戶名,但我可以執行「登錄」。這可能是JS中的一個問題? – 2011-03-18 03:06:38

+0

測試是否可以正常形態的PHP,你開始在session_start()在這兩個ajax_login.php和表單頁面的會議? – 2011-03-18 03:14:26

+0

此刻我的代碼等於被更新的帖子,感謝勞倫斯 – 2011-03-18 03:16:34