2017-03-03 28 views
3

我想創建一個非常簡單的MySQL登錄函數使用PHP。用戶名和密碼通過AJAX發佈到PHP。 Ajax的功能是:簡單的MySQL登錄PHP和AJAX請求

function login(){ 

var user = document.getElementById("username").value; 
var pass = document.getElementById("password").value; 

    $.ajax({ 

     url : "login.php", 
     type : "POST", 
     data : { 
      username : user, 
      password : pass 
     }, 
     success : function(response){ 
      alert(response); 
     }, 
     error : function(response){ 
      alert(response); 
     } 
    }); 
} 

登錄腳本:

$conn = new mysqli($host, $username, $password, $dbname); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
//echo "Connected successfully"; 
$user = $_POST['username']; 
$pass = $_POST['password']; 


$query="SELECT * FROM Users WHERE email = '$user' AND password ='$pass' LIMIT 1"; 

$result = $conn->query($query); 
$count = $result->num_rows; 
if($count == 1){ 
    echo "success"; 
}else{ 
    echo "incorrect login details"; 
} 

$conn->close(); 
?> 

看來,$數始終爲零,即使用戶名和密碼是否正確。我已驗證用戶名和密碼正在PHP中成功檢索。

一個更簡單的查詢,SELECT * FROM用戶也返回0

試圖回聲或顯示在目標對象的var_dump $結果結果計數。

任何人都可以看到這個代碼的任何明顯的問題?一個新的眼睛將不勝感激。

注意:這個簡單的函數並不是安全的,因此不安全的查詢格式。

+0

$ count = mysqli_num_rows($ result);請嘗試這個 – cfprabhu

+0

請你回聲** $查詢** ?? – HoangHieu

+0

@cfprabhu警報大多顯示「不正確的登錄細節」,每過一段時間都會顯示對象對象。 – denverCoder9

回答

0

我建議將以下內容更改爲字符串並運行PHP腳本。如果字符串出現在數據庫中,則可以排除它是否由PHP腳本引起,在這種情況下,它將是html和ajax元素。

//$user = $_POST['username']; 
//$pass = $_POST['password']; 

$user = 'userTest'; 
$pass = 'userPass'; 
+0

非常感謝您的意見!從中解決了這個問題,拼錯了$ db_name變量。不敢相信我沒有早點看到它。 – denverCoder9

+0

太棒了,很高興我能幫到你。 – denski