2011-04-09 90 views
0

基本上我想檢查一個數據庫,看看用戶名和密碼是否匹配,如果是這樣解鎖提交按鈕。通過AJAX/MySql/PHP登錄

<?php 
mysql_connect('localhost', '', ''); 
mysql_select_db('database'); 
if(isset($_POST['submit'])){ 
    mysql_query("SELECT username,password FROM table WHERE username='".$_POST['username']."',password='".$_POST['password']."'") 
} 
?> 

形式:

<form method="post"> 
Username <input type="text" name="username" /> 
Password <input type="password" name="password" /> 
<input type="submit" name="submit" value="Login" /> 
</form> 
+0

爲什麼你需要解鎖提交按鈕,然後在你的登錄表單中沒有使用提交按鈕。 – 2011-04-09 17:45:17

回答

2

我不知道,但如果我得到你的權利反正嘗試:

HTML:

<form method="post"> 
    Username <input type="text" id="username" name="username" /> 
    Password <input type="password" id="password" name="password" /> 
    <input type="submit" name="submit" id="submit" value="Login" /> 
</form> 

的jQuery:

$("#submit").hide(); 
    $.post("checkUsername.php", { username: $("#username").val(), password: $("#password").val() }, function(result) { 
if(result == "true") { $("#submit").fadeIn(fast); } 

}); 

PHP(checkUsername。 php):

if(mysql_num_rows(mysql_query("SELECT username,password FROM table WHERE username LIKE '". mysql_real_escape_string($_POST['username']) . "',password LIKE '".mysql_real_escape_string($_POST['password'])."'"))) 
    { 
     echo "true"; 
    } 
    else 
    { 

    echo "false"; 
    } 
2
  1. 什麼是你的問題?你忘了實際詢問其中一個;)
  2. 在插入查詢之前,您至少需要使用mysql_real_escape_string()轉義字符串。否則 你已成熟SQL injection
  3. 以純文本保存密碼通常是不合適的。 Hash and salt
  4. 已經有一些auth庫爲你做了大部分工作,並保護你免受許多其他你還沒有聽說過的問題。不要重新發明一個由經驗豐富的人多次建造的車輪。評估包,比如PEAR_Auth
+0

+1爲所有有用的鏈接 – Eric 2011-04-09 18:12:54

0

您應該避免像這樣使用LIKE關鍵字來進行登錄提示,因爲通配符不受mysql_real_escape_string影響。用戶可以使用用戶名和密碼「%」登錄。

請參見下面的博客文章: http://blog.spiderlabs.com/2012/03/like-omg.html

使用=代替LIKE。